aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/CHANGELOG.md6
-rw-r--r--activerecord/lib/active_record/store.rb7
-rw-r--r--activerecord/test/cases/store_test.rb5
3 files changed, 13 insertions, 5 deletions
diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md
index 84fffb3d17..a965fe0494 100644
--- a/activerecord/CHANGELOG.md
+++ b/activerecord/CHANGELOG.md
@@ -47,7 +47,7 @@
*Tony Schneider*
-* Allow ActiveRecord::Relation#pluck to accept multiple columns. Returns an
+* Allow `ActiveRecord::Relation#pluck` to accept multiple columns. Returns an
array of arrays containing the typecasted values:
Person.pluck(:id, :name)
@@ -88,7 +88,7 @@
*Andrew White*
-* Move HABTM validity checks to ActiveRecord::Reflection. One side effect of
+* Move HABTM validity checks to `ActiveRecord::Reflection`. One side effect of
this is to move when the exceptions are raised from the point of declaration
to when the association is built. This is consistant with other association
validity checks.
@@ -96,7 +96,7 @@
*Andrew White*
* Added `stored_attributes` hash which contains the attributes stored using
- ActiveRecord::Store. This allows you to retrieve the list of attributes
+ `ActiveRecord::Store`. This allows you to retrieve the list of attributes
you've defined.
class User < ActiveRecord::Base
diff --git a/activerecord/lib/active_record/store.rb b/activerecord/lib/active_record/store.rb
index d13491502e..2af5b02fb7 100644
--- a/activerecord/lib/active_record/store.rb
+++ b/activerecord/lib/active_record/store.rb
@@ -58,8 +58,11 @@ module ActiveRecord
keys.each do |key|
define_method("#{key}=") do |value|
initialize_store_attribute(store_attribute)
- send(store_attribute)[key] = value
- send :"#{store_attribute}_will_change!"
+ attribute = send(store_attribute)
+ if value != attribute[key]
+ attribute[key] = value
+ send :"#{store_attribute}_will_change!"
+ end
end
define_method(key) do
diff --git a/activerecord/test/cases/store_test.rb b/activerecord/test/cases/store_test.rb
index e401dd4b12..7f2b8945f9 100644
--- a/activerecord/test/cases/store_test.rb
+++ b/activerecord/test/cases/store_test.rb
@@ -34,6 +34,11 @@ class StoreTest < ActiveRecord::TestCase
assert @john.settings_changed?
end
+ test "updating the store won't mark it as changed if an attribute isn't changed" do
+ @john.color = @john.color
+ assert !@john.settings_changed?
+ end
+
test "object initialization with not nullable column" do
assert_equal true, @john.remember_login
end