Module: ActiveRemote::Dirty

Extended by:
ActiveSupport::Concern
Included in:
Base
Defined in:
lib/active_remote/dirty.rb

Instance Method Summary collapse

Instance Method Details

#disable_dirty_trackingObject



15
16
17
# File 'lib/active_remote/dirty.rb', line 15

def disable_dirty_tracking
  @_active_remote_track_changes = false
end

#enable_dirty_trackingObject



19
20
21
# File 'lib/active_remote/dirty.rb', line 19

def enable_dirty_tracking
  @_active_remote_track_changes = true
end

#reloadObject

Override #reload to provide dirty tracking.



25
26
27
28
29
30
# File 'lib/active_remote/dirty.rb', line 25

def reload(*)
  super.tap do
    @previously_changed.try(:clear)
    changed_attributes.clear
  end
end

#saveObject

Override #save to store changes as previous changes then clear them.



34
35
36
37
38
39
40
41
# File 'lib/active_remote/dirty.rb', line 34

def save(*)
  if status = super
    @previously_changed = changes
    changed_attributes.clear
  end

  status
end

#save!Object

Override #save to store changes as previous changes then clear them.



45
46
47
48
49
50
# File 'lib/active_remote/dirty.rb', line 45

def save!(*)
  super.tap do
    @previously_changed = changes
    changed_attributes.clear
  end
end

#skip_dirty_tracking(&block) ⇒ Object



52
53
54
55
56
57
58
# File 'lib/active_remote/dirty.rb', line 52

def skip_dirty_tracking(&block)
  disable_dirty_tracking

  yield

  enable_dirty_tracking
end