diff options
-rw-r--r-- | activemodel/lib/active_model/attribute_methods.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/activemodel/lib/active_model/attribute_methods.rb b/activemodel/lib/active_model/attribute_methods.rb index 97a83e58af..59977b6142 100644 --- a/activemodel/lib/active_model/attribute_methods.rb +++ b/activemodel/lib/active_model/attribute_methods.rb @@ -180,6 +180,37 @@ module ActiveModel undefine_attribute_methods end + + # Allows you to make aliases for attributes. + # + # 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 + # + # class Person + # attr_accessor :nickname + # + # alias_attribute :nickname, :name + # end + # + # person = Person.new + # person.nickname = "Bob" + # person.nickname # => "Bob" + # person.clear_nickname + # person.nickname # => nil def alias_attribute(new_name, old_name) attribute_method_matchers.each do |matcher| matcher_new = matcher.method_name(new_name).to_s |