Method: ActiveModel::AttributeMethods::ClassMethods#attribute_method_prefix
- Defined in:
- lib/active_model/attribute_methods.rb
#attribute_method_prefix(*prefixes) ⇒ Object
Declares a method available for all attributes with the given prefix. Uses method_missing and respond_to? to rewrite the method.
#{prefix}#{attr}(*args, &block)
to
#{prefix}attribute(#{attr}, *args, &block)
An instance method #{prefix}attribute must exist and accept at least the attr argument.
For example:
class Person
include ActiveModel::AttributeMethods
attr_accessor :name
attribute_method_prefix 'clear_'
define_attribute_methods [:name]
private
def clear_attribute(attr)
send("#{attr}=", nil)
end
end
person = Person.new
person.name = "Bob"
person.name # => "Bob"
person.clear_name
person.name # => nil
153 154 155 156 |
# File 'lib/active_model/attribute_methods.rb', line 153 def attribute_method_prefix(*prefixes) attribute_method_matchers.concat(prefixes.map { |prefix| AttributeMethodMatcher.new :prefix => prefix }) undefine_attribute_methods end |