From 93742701b5e1e55599a89c536dd343885086b2a0 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Sun, 6 May 2012 10:54:25 -0700 Subject: Use deep_dup in aciverecord default columns assignment --- activerecord/lib/active_record/core.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'activerecord') diff --git a/activerecord/lib/active_record/core.rb b/activerecord/lib/active_record/core.rb index 9a76c9f617..a869ed8c04 100644 --- a/activerecord/lib/active_record/core.rb +++ b/activerecord/lib/active_record/core.rb @@ -1,6 +1,6 @@ require 'active_support/concern' require 'active_support/core_ext/hash/indifferent_access' -require 'active_support/core_ext/object/duplicable' +require 'active_support/core_ext/object/deep_dup' require 'thread' module ActiveRecord @@ -166,9 +166,7 @@ module ActiveRecord # # Instantiates a single new object bypassing mass-assignment security # User.new({ :first_name => 'Jamie', :is_admin => true }, :without_protection => true) def initialize(attributes = nil, options = {}) - # TODO: use deep_dup after fixing it to also dup values - defaults = Hash[self.class.column_defaults.map { |k, v| [k, v.duplicable? ? v.dup : v] }] - @attributes = self.class.initialize_attributes(defaults) + @attributes = self.class.initialize_attributes(self.class.column_defaults.deep_dup) @columns_hash = self.class.column_types.dup init_internals -- cgit v1.2.3