instance method becomes

Ruby on Rails 4.2.9

Since v3.0.20

Available in: v3.0.20 v3.1.12 v3.2.22.5 v4.0.13 v4.1.16 v4.2.9 v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

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

klass req
Source
# File activerecord/lib/active_record/persistence.rb, line 198
    def becomes(klass)
      became = klass.new
      became.instance_variable_set("@attributes", @attributes)
      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 198 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveRecord::Persistence

Type at least 2 characters to search.

↑↓ navigate · open · esc close