diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md index 0cba1009b6fe520f6f5870fdd137d1c4686db1b7..74f5666de0f08d41a64d3494014a07548620aed7 100644 --- a/activerecord/CHANGELOG.md +++ b/activerecord/CHANGELOG.md @@ -1,3 +1,7 @@ +* `@destroyed` should always be set to `false` when an object is duped. + + *Kuldeep Aggarwal* + * Fixed has_many association to make it support irregular inflections. Fixes #8928. diff --git a/activerecord/lib/active_record/core.rb b/activerecord/lib/active_record/core.rb index 4e53f660059cc00a6d3f700011c693e2cc9a12aa..d6df98a80ffc626e2346ae9c0b89c249cac2630b 100644 --- a/activerecord/lib/active_record/core.rb +++ b/activerecord/lib/active_record/core.rb @@ -267,6 +267,7 @@ def initialize_dup(other) # :nodoc: @attributes_cache = {} @new_record = true + @destroyed = false super end diff --git a/activerecord/test/cases/persistence_test.rb b/activerecord/test/cases/persistence_test.rb index 046fe83e54066c4b25696c125d882672994d4eda..9209672ac5c63ee4dc82443dc81ae2c56a768140 100644 --- a/activerecord/test/cases/persistence_test.rb +++ b/activerecord/test/cases/persistence_test.rb @@ -233,6 +233,22 @@ def test_save_for_record_with_only_primary_key_that_is_provided assert_nothing_raised { Minimalistic.create!(:id => 2) } end + def test_save_with_duping_of_destroyed_object + developer = Developer.create(name: "Kuldeep") + developer.destroy + new_developer = developer.dup + new_developer.save + assert new_developer.persisted? + end + + def test_dup_of_destroyed_object_is_not_destroyed + developer = Developer.create(name: "Kuldeep") + developer.destroy + new_developer = developer.dup + new_developer.save + assert_equal new_developer.destroyed?, false + end + def test_create_many topics = Topic.create([ { "title" => "first" }, { "title" => "second" }]) assert_equal 2, topics.size