instance method becomes

Ruby on Rails 2.3.18

Since v2.2.3 Last seen in v2.3.18

Available in: v2.2.3 v2.3.18

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/base.rb, line 2656
      def becomes(klass)
        klass.new.tap do |became|
          became.instance_variable_set("@attributes", @attributes)
          became.instance_variable_set("@attributes_cache", @attributes_cache)
          became.instance_variable_set("@new_record", new_record?)
        end
      end

Defined in activerecord/lib/active_record/base.rb line 2656 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveRecord::Base

Type at least 2 characters to search.

↑↓ navigate · open · esc close