def becomes(klass)
      became = klass.allocate
      became.send(:initialize)
      became.instance_variable_set("@attributes", @attributes)
      became.instance_variable_set("@mutations_from_database", @mutations_from_database ||= nil)
      became.instance_variable_set("@new_record", new_record?)
      became.instance_variable_set("@destroyed", destroyed?)
      became.errors.copy!(errors)
      became
    end
def becomes(klass)
      became = klass.allocate
      became.send(:initialize)
      became.instance_variable_set("@attributes", @attributes)
      became.instance_variable_set("@mutations_from_database", @mutations_from_database ||= nil)
      became.instance_variable_set("@new_record", new_record?)
      became.instance_variable_set("@destroyed", destroyed?)
      became.errors.copy!(errors)
      became
    end
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, <tt>Client < Company</tt> to do something
 like render <tt>partial: @client.becomes(Company)</tt> 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.
 Therefore the sti column value will still be the same.
 Any change to the attributes on either instance will affect both instances.
 If you want to change the sti column as well, use #becomes! instead.