From c1d56d11c0230d62a63c7c8d620d2a8c88529580 Mon Sep 17 00:00:00 2001 From: Cyril Vechera Date: Sat, 14 Mar 2020 21:46:42 +0000 Subject: [PATCH 1/2] comparision bugfix records with equal non-nil id's are equal, but we need to compare attributes if both id's are nil --- .../lib/reactive_record/active_record/instance_methods.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruby/hyper-model/lib/reactive_record/active_record/instance_methods.rb b/ruby/hyper-model/lib/reactive_record/active_record/instance_methods.rb index 0eccace04..156a6ffee 100644 --- a/ruby/hyper-model/lib/reactive_record/active_record/instance_methods.rb +++ b/ruby/hyper-model/lib/reactive_record/active_record/instance_methods.rb @@ -128,7 +128,8 @@ def ==(ar_instance) return false unless ar_instance.is_a?(ActiveRecord::Base) return false if ar_instance.new_record? return false unless self.class.base_class == ar_instance.class.base_class - id == ar_instance.id + return id == ar_instance.id unless id.nil? + attributes == ar_instance.attributes end def [](attr) From 974732665b6716643a9e88028a59916da6ca1385 Mon Sep 17 00:00:00 2001 From: Cyril Vechera Date: Sat, 14 Mar 2020 21:48:15 +0000 Subject: [PATCH 2/2] a destroyed record keeps its id and other already loaded attributes --- .../reactive_record/active_record/reactive_record/getters.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/hyper-model/lib/reactive_record/active_record/reactive_record/getters.rb b/ruby/hyper-model/lib/reactive_record/active_record/reactive_record/getters.rb index b60cba33e..57a520f2e 100644 --- a/ruby/hyper-model/lib/reactive_record/active_record/reactive_record/getters.rb +++ b/ruby/hyper-model/lib/reactive_record/active_record/reactive_record/getters.rb @@ -95,7 +95,7 @@ def non_relationship_getter_common(attr, reload, &block) def getter_common(attribute, reload) @virgin = false unless data_loading? - return if @destroyed + return @attributes[attribute] if @destroyed if @attributes.key? attribute current_value = @attributes[attribute] current_value.notify if current_value.is_a? Base::DummyValue