aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorPiotr Sarnacki <drogus@gmail.com>2012-05-06 10:54:25 -0700
committerPiotr Sarnacki <drogus@gmail.com>2012-05-06 11:13:15 -0700
commit93742701b5e1e55599a89c536dd343885086b2a0 (patch)
tree15040b66db992044edf3d005cd2590c71c4c237d /activerecord
parent98553a5574a37f96b90acb8dcfa64b4c15a93de4 (diff)
downloadrails-93742701b5e1e55599a89c536dd343885086b2a0.tar.gz
rails-93742701b5e1e55599a89c536dd343885086b2a0.tar.bz2
rails-93742701b5e1e55599a89c536dd343885086b2a0.zip
Use deep_dup in aciverecord default columns assignment
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/core.rb6
1 files changed, 2 insertions, 4 deletions
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