Module: ActiveRecord::AttributeMethods::ClassMethods
- Defined in:
- lib/active_record/attribute_methods.rb
Overview
Declare and check for suffixed attribute methods.
Instance Method Summary collapse
-
#attribute_method_suffix(*suffixes) ⇒ Object
Declare a method available for all attributes with the given suffix.
-
#match_attribute_method?(method_name) ⇒ Boolean
Returns MatchData if method_name is an attribute method.
Instance Method Details
#attribute_method_suffix(*suffixes) ⇒ Object
Declare a method available for all attributes with the given suffix. Uses method_missing and respond_to? to rewrite the method
#{attr}#{suffix}(*args, &block)
to
attribute#{suffix}(#{attr}, *args, &block)
An attribute#suffix instance method must exist and accept at least the attr argument.
For example:
class Person < ActiveRecord::Base
attribute_method_suffix '_changed?'
private
def attribute_changed?(attr)
...
end
end
person = Person.find(1)
person.name_changed? # => false
person.name = 'Hubert'
person.name_changed? # => true
35 36 37 38 |
# File 'lib/active_record/attribute_methods.rb', line 35 def attribute_method_suffix(*suffixes) attribute_method_suffixes.concat suffixes rebuild_attribute_method_regexp end |
#match_attribute_method?(method_name) ⇒ Boolean
Returns MatchData if method_name is an attribute method.
41 42 43 44 |
# File 'lib/active_record/attribute_methods.rb', line 41 def match_attribute_method?(method_name) rebuild_attribute_method_regexp unless defined?(@@attribute_method_regexp) && @@attribute_method_regexp @@attribute_method_regexp.match(method_name) end |