Module: Toy::Dirty

Extended by:
ActiveSupport::Concern
Includes:
ActiveModel::Dirty, Attributes, Cloneable
Defined in:
lib/toy/dirty.rb

Instance Method Summary collapse

Methods included from Attributes

#[], #[]=, #attributes, #attributes=, #id, #persisted_attributes

Instance Method Details

#initializeObject



8
9
10
11
12
# File 'lib/toy/dirty.rb', line 8

def initialize(*)
  super
  # never register initial id assignment as a change
  @changed_attributes.delete('id') if @changed_attributes
end

#initialize_copyObject



14
15
16
17
18
19
# File 'lib/toy/dirty.rb', line 14

def initialize_copy(*)
  super.tap do
    @previously_changed = {}
    @changed_attributes = {}
  end
end

#write_attribute(name, value) ⇒ Object



21
22
23
24
25
26
# File 'lib/toy/dirty.rb', line 21

def write_attribute(name, value)
  name    = name.to_s
  current = read_attribute(name)
  attribute_will_change!(name) if current != value
  super
end