aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2011-10-25 17:22:52 -0500
committerDavid Heinemeier Hansson <david@loudthinking.com>2011-10-25 17:22:52 -0500
commit5daf07704ad21d885661216281ffc48b6ea6adfb (patch)
tree1e032663a6530334ec70408c1684800af404b582 /activerecord
parent85b64f98d100d37b3a232c315daa10fad37dccdc (diff)
downloadrails-5daf07704ad21d885661216281ffc48b6ea6adfb.tar.gz
rails-5daf07704ad21d885661216281ffc48b6ea6adfb.tar.bz2
rails-5daf07704ad21d885661216281ffc48b6ea6adfb.zip
Fix that changing a store should mark the store attribute as changed
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/store.rb1
-rw-r--r--activerecord/test/cases/store_test.rb5
2 files changed, 6 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/store.rb b/activerecord/lib/active_record/store.rb
index d5910df891..8cc84f81d0 100644
--- a/activerecord/lib/active_record/store.rb
+++ b/activerecord/lib/active_record/store.rb
@@ -37,6 +37,7 @@ module ActiveRecord
Array(keys).flatten.each do |key|
define_method("#{key}=") do |value|
send(store_attribute)[key] = value
+ send("#{store_attribute}_will_change!")
end
define_method(key) do
diff --git a/activerecord/test/cases/store_test.rb b/activerecord/test/cases/store_test.rb
index 3d056d93b6..3f7a965cfb 100644
--- a/activerecord/test/cases/store_test.rb
+++ b/activerecord/test/cases/store_test.rb
@@ -26,4 +26,9 @@ class StoreTest < ActiveRecord::TestCase
assert 'graeters', @john.reload.settings[:icecream]
end
+
+ test "updating the store will mark it as changed" do
+ @john.color = 'red'
+ assert @john.settings_changed?
+ end
end