aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/lib/active_model/attribute_mutation_tracker.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activemodel/lib/active_model/attribute_mutation_tracker.rb')
-rw-r--r--activemodel/lib/active_model/attribute_mutation_tracker.rb17
1 files changed, 12 insertions, 5 deletions
diff --git a/activemodel/lib/active_model/attribute_mutation_tracker.rb b/activemodel/lib/active_model/attribute_mutation_tracker.rb
index 8e92c8807f..6abf37bd44 100644
--- a/activemodel/lib/active_model/attribute_mutation_tracker.rb
+++ b/activemodel/lib/active_model/attribute_mutation_tracker.rb
@@ -11,6 +11,10 @@ module ActiveModel
@forced_changes = Set.new
end
+ def changed_attribute_names
+ attr_names.select { |attr_name| changed?(attr_name) }
+ end
+
def changed_values
attr_names.each_with_object({}.with_indifferent_access) do |attr_name, result|
if changed?(attr_name)
@@ -23,7 +27,7 @@ module ActiveModel
attr_names.each_with_object({}.with_indifferent_access) do |attr_name, result|
change = change_to_attribute(attr_name)
if change
- result[attr_name] = change
+ result.merge!(attr_name => change)
end
end
end
@@ -35,10 +39,6 @@ module ActiveModel
end
end
- def changed_attribute_names
- attr_names.select { |attr| changed?(attr) }
- end
-
def any_changes?
attr_names.any? { |attr| changed?(attr) }
end
@@ -80,6 +80,10 @@ module ActiveModel
class NullMutationTracker # :nodoc:
include Singleton
+ def changed_attribute_names(*)
+ []
+ end
+
def changed_values(*)
{}
end
@@ -108,5 +112,8 @@ module ActiveModel
def original_value(*)
end
+
+ def force_change(*)
+ end
end
end