Module: DuckRecord::Persistence

Extended by:
ActiveSupport::Concern
Included in:
Base
Defined in:
lib/duck_record/persistence.rb

Overview

DuckRecord Persistence

Instance Method Summary collapse

Instance Method Details

#becomes(klass) ⇒ Object

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.



30
31
32
33
34
35
36
37
# 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?Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/duck_record/persistence.rb', line 10

def destroyed?
  false
end

#new_record?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/duck_record/persistence.rb', line 14

def new_record?
  true
end

#persisted?Boolean

Returns:

  • (Boolean)


6
7
8
# File 'lib/duck_record/persistence.rb', line 6

def persisted?
  false
end