diff options
author | Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com> | 2009-07-01 12:16:35 -0700 |
---|---|---|
committer | Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com> | 2009-07-01 12:16:35 -0700 |
commit | 16dc139caa9286638785469304a69ab77e4fe9b5 (patch) | |
tree | 82e7e7f79428e0adf0e120e49361628bcd2474a8 | |
parent | 882dd4e6054470ee56c46ab1432861952c81b633 (diff) | |
download | rails-16dc139caa9286638785469304a69ab77e4fe9b5.tar.gz rails-16dc139caa9286638785469304a69ab77e4fe9b5.tar.bz2 rails-16dc139caa9286638785469304a69ab77e4fe9b5.zip |
Added AR:B#dup method for duplicationg object without frozen attributes [#2859 state:resolved]
Signed-off-by: Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>
-rwxr-xr-x | activerecord/lib/active_record/base.rb | 7 | ||||
-rwxr-xr-x | activerecord/test/cases/base_test.rb | 4 |
2 files changed, 11 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index ff5a836b52..deab56e219 100755 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -2870,6 +2870,13 @@ module ActiveRecord #:nodoc: @attributes.frozen? end + # Returns duplicated record with unfreezed attributes. + def dup + obj = super + obj.instance_variable_set('@attributes', instance_variable_get('@attributes').dup) + obj + end + # Returns +true+ if the record is read only. Records loaded through joins with piggy-back # attributes will be marked as read only since they cannot be saved. def readonly? diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb index 0f3f6e41a5..f9ac37cc87 100755 --- a/activerecord/test/cases/base_test.rb +++ b/activerecord/test/cases/base_test.rb @@ -2116,4 +2116,8 @@ class BasicsTest < ActiveRecord::TestCase assert_equal custom_datetime, parrot[attribute] end end + + def test_dup + assert !Minimalistic.new.freeze.dup.frozen? + end end |