From 7bbcdb6111b1d53c2d17c75c7dc91f9cd9359c53 Mon Sep 17 00:00:00 2001 From: Adam Hutchison Date: Sat, 7 Dec 2024 12:55:55 -0700 Subject: [PATCH] Match Rails dirty tracking behavior Do not skip dirty tracking when initializing to match Rails behavior. Instead, use .instantiate, or manually reset changes as needed. --- lib/active_remote/base.rb | 6 ++---- lib/active_remote/dirty.rb | 32 -------------------------------- 2 files changed, 2 insertions(+), 36 deletions(-) diff --git a/lib/active_remote/base.rb b/lib/active_remote/base.rb index 591da9d..a947df4 100644 --- a/lib/active_remote/base.rb +++ b/lib/active_remote/base.rb @@ -49,10 +49,8 @@ def initialize(attributes = {}) super @new_record = true - skip_dirty_tracking do - run_callbacks :initialize do - yield self if block_given? - end + run_callbacks :initialize do + yield self if block_given? end end diff --git a/lib/active_remote/dirty.rb b/lib/active_remote/dirty.rb index f235c89..d3362ee 100644 --- a/lib/active_remote/dirty.rb +++ b/lib/active_remote/dirty.rb @@ -8,16 +8,6 @@ module Dirty included do include ActiveModel::Dirty - - attr_accessor :_active_remote_track_changes - end - - def disable_dirty_tracking - @_active_remote_track_changes = false - end - - def enable_dirty_tracking - @_active_remote_track_changes = true end # Override #reload to provide dirty tracking. @@ -54,30 +44,8 @@ def save!(*) end end - def skip_dirty_tracking - disable_dirty_tracking - - yield - - enable_dirty_tracking - end - private - # Wether or not changes are currently being tracked for this class. - # - def _active_remote_track_changes? - @_active_remote_track_changes != false - end - - # Override ActiveAttr's attribute= method so we can provide support for - # ActiveModel::Dirty. - # - def attribute=(name, value) - send(:"#{name}_will_change!") if _active_remote_track_changes? && value != self[name] - super - end - # Override #update to only send changed attributes. # def remote_update(*)