diff options
author | Jon Leighton <j@jonathanleighton.com> | 2013-04-19 06:19:06 -0700 |
---|---|---|
committer | Jon Leighton <j@jonathanleighton.com> | 2013-04-19 06:19:06 -0700 |
commit | 77fec1344bfbf7c01f595afbf752633c0eaeed10 (patch) | |
tree | 1d8ee07da37b0972e46b94c389f1741893ccb609 | |
parent | 30f9237b8eb4e445f5e1ce898581dff6675c28ee (diff) | |
parent | d5867a01a82d14216541c8bfc38e466b02580376 (diff) | |
download | rails-77fec1344bfbf7c01f595afbf752633c0eaeed10.tar.gz rails-77fec1344bfbf7c01f595afbf752633c0eaeed10.tar.bz2 rails-77fec1344bfbf7c01f595afbf752633c0eaeed10.zip |
Merge pull request #10200 from calebthompson/ct-fix-freeze-freezing-cloned-models
Fix freeze applying to cloned objects
-rw-r--r-- | activerecord/lib/active_record/core.rb | 6 | ||||
-rw-r--r-- | activerecord/test/cases/clone_test.rb | 7 |
2 files changed, 11 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/core.rb b/activerecord/lib/active_record/core.rb index 733d4e1c67..9e45e6e474 100644 --- a/activerecord/lib/active_record/core.rb +++ b/activerecord/lib/active_record/core.rb @@ -307,9 +307,11 @@ module ActiveRecord id.hash end - # Freeze the attributes hash such that associations are still accessible, even on destroyed records. + # Clone and freeze the attributes hash such that associations are still + # accessible, even on destroyed records, but cloned models will not be + # frozen. def freeze - @attributes.freeze + @attributes = @attributes.clone.freeze self end diff --git a/activerecord/test/cases/clone_test.rb b/activerecord/test/cases/clone_test.rb index d91646efca..5e43082c33 100644 --- a/activerecord/test/cases/clone_test.rb +++ b/activerecord/test/cases/clone_test.rb @@ -29,5 +29,12 @@ module ActiveRecord topic.author_name = 'Aaron' assert_equal 'Aaron', cloned.author_name end + + def test_freezing_a_cloned_model_does_not_freeze_clone + cloned = Topic.new + clone = cloned.clone + cloned.freeze + assert_not clone.frozen? + end end end |