instance method
alias_attribute
Ruby on Rails edge
Since v3.0.20Signature
alias_attribute(new_name, old_name)
Allows you to make aliases for attributes.
“‘ class Person
include ActiveModel::AttributeMethods
attr_accessor :name
attribute_method_suffix '_short?'
define_attribute_methods :name
alias_attribute :nickname, :name
private
def attribute_short?(attr)
send(attr).length < 5
end
end
person = Person.new person.name = ‘Bob’ person.name # => “Bob” person.nickname # => “Bob” person.name_short? # => true person.nickname_short? # => true “‘
Parameters
-
new_namereq -
old_namereq
Source
# File activemodel/lib/active_model/attribute_methods.rb, line 222
def alias_attribute(new_name, old_name)
old_name = -old_name.to_s
new_name = -new_name.to_s
self.attribute_aliases = attribute_aliases.merge(new_name => old_name).freeze
# Pass the new alias down to subclasses that hold their own copy,
# unless a subclass already has an alias with that name.
descendants.each do |subclass|
next if subclass.attribute_aliases.equal?(subclass.superclass.attribute_aliases)
next if subclass.attribute_aliases.key?(new_name)
subclass.attribute_aliases = subclass.attribute_aliases.merge(new_name => old_name).freeze
end
record_alias_by_attribute_name(old_name, new_name)
eagerly_generate_alias_attribute_methods(new_name, old_name)
end
Defined in activemodel/lib/active_model/attribute_methods.rb line 222
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveModel::AttributeMethods::ClassMethods