After manually aliasing predicate methods many times, I wanted to propose letting attr_reader take predicate method names that correspond to instance variables of the base name without a trailing question mark. https://github.com/ruby/ruby/pull/14391
If the base name method doesn't already exist, a predicate name defines a base name method attribute reader to alias then undefines the base name.
For example, this creates an enabled? method that reads @enabled:
attr_reader:enabled?
This feature is only supported for attr_reader and attr, not attr_writer or attr_accessor, since setter methods cannot have question marks.
Is duplicate ofFeature #11167: Allow an attr_ variant for query-methods that end with a question mark '?' character, such as: def foo? returning @foo added
Wow! There's already an open ticket for this exact issue even. I apologize for not properly searching before filing. I should have just added a PR link there in retrospect.
This feature is only supported for attr_reader and attr, not attr_writer or attr_accessor, since setter methods cannot have question marks.
Using the same logic, attr_accessor :enabled? could generate #enabled? and #enabled= without problem. attr_writer :enabled? would be weird though.
I was thinking of attr_writer :enabled? being weird and dismissed attr_accessor :enabled?. I didn't think of the case where you want attr_reader :enabled? and attr_writer :enabled without attr_writer :enabled. I wouldn't mind doing an attr_reader :enabled? with attr_writer :enabled but agree attr_accessor :enabled? makes sense based on the pattern.