module DuckRecord::Persistence
DuckRecord
Persistence¶ ↑
Public Instance Methods
becomes(klass)
click to toggle source
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. 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.
# File lib/duck_record/persistence.rb, line 30 def becomes(klass) became = klass.new became.instance_variable_set("@attributes", @attributes) became.instance_variable_set("@mutation_tracker", @mutation_tracker) if defined?(@mutation_tracker) became.instance_variable_set("@changed_attributes", attributes_changed_by_setter) became.errors.copy!(errors) became end
destroyed?()
click to toggle source
# File lib/duck_record/persistence.rb, line 10 def destroyed? false end
new_record?()
click to toggle source
# File lib/duck_record/persistence.rb, line 14 def new_record? true end
persisted?()
click to toggle source
# File lib/duck_record/persistence.rb, line 6 def persisted? false end