diff options
Diffstat (limited to 'activerecord')
-rwxr-xr-x | activerecord/lib/active_record/base.rb | 7 | ||||
-rwxr-xr-x | activerecord/test/cases/base_test.rb | 4 | ||||
-rw-r--r-- | activerecord/test/cases/helper.rb | 2 |
3 files changed, 11 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index 1f96e6dcc5..bb6869c6ce 100755 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -2864,6 +2864,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 diff --git a/activerecord/test/cases/helper.rb b/activerecord/test/cases/helper.rb index c30186286d..d1e7caed89 100644 --- a/activerecord/test/cases/helper.rb +++ b/activerecord/test/cases/helper.rb @@ -6,8 +6,6 @@ require 'config' require 'rubygems' require 'test/unit' require 'stringio' -gem 'mocha', '>= 0.9.5' -require 'mocha' require 'active_record' require 'active_record/test_case' |