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

#remoteObject

Override #remote to provide dirty tracking.



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

def remote(*)
  super.tap do
    clear_changes_information
  end
end

#saveObject

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



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

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.



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

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

#skip_dirty_trackingObject



60
61
62
63
64
65
66
# File 'lib/active_remote/dirty.rb', line 60

def skip_dirty_tracking
  disable_dirty_tracking

  yield

  enable_dirty_tracking
end