instance method
becomes
Ruby on Rails 4.1.16
Since v3.0.20Signature
becomes(klass)
Returns an instance of the specified klass with the attributes of the current record. This is mostly useful in relation to single-table inheritance structures where you want a subclass to appear as the superclass. This can be used along with record identification in Action Pack to allow, say, Client < Company to do something like render partial: @client.becomes(Company) to render that instance using the companies/company partial instead of clients/client.
Note: The new instance will share a link to the same attributes as the original class. So any change to the attributes in either instance will affect the other.
Parameters
-
klassreq
Source
# File activerecord/lib/active_record/persistence.rb, line 180
def becomes(klass)
became = klass.new
became.instance_variable_set("@attributes", @attributes)
became.instance_variable_set("@attributes_cache", @attributes_cache)
changed_attributes = @changed_attributes if defined?(@changed_attributes)
became.instance_variable_set("@changed_attributes", changed_attributes || {})
became.instance_variable_set("@new_record", new_record?)
became.instance_variable_set("@destroyed", destroyed?)
became.instance_variable_set("@errors", errors)
became
end
Defined in activerecord/lib/active_record/persistence.rb line 180
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::Persistence