diff options
| -rw-r--r-- | activerecord/CHANGELOG.md | 5 | ||||
| -rw-r--r-- | activerecord/lib/active_record/timestamp.rb | 1 | ||||
| -rw-r--r-- | activerecord/test/cases/dup_test.rb | 14 | 
3 files changed, 20 insertions, 0 deletions
| diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md index 9abfe2e6fd..6e0f1f31dd 100644 --- a/activerecord/CHANGELOG.md +++ b/activerecord/CHANGELOG.md @@ -269,6 +269,11 @@      *Ari Pollak* +*   Fix AR#dup to nullify the validation errors in the dup'ed object. Previously the original +    and the dup'ed object shared the same errors. + +    * Christian Seiler* +  *   Raise `ArgumentError` if list of attributes to change is empty in `update_all`.      *Roman Shatsov* diff --git a/activerecord/lib/active_record/timestamp.rb b/activerecord/lib/active_record/timestamp.rb index bf95ccb298..dd08a6f4f5 100644 --- a/activerecord/lib/active_record/timestamp.rb +++ b/activerecord/lib/active_record/timestamp.rb @@ -42,6 +42,7 @@ module ActiveRecord      def initialize_dup(other) # :nodoc:        clear_timestamp_attributes +      super      end    private diff --git a/activerecord/test/cases/dup_test.rb b/activerecord/test/cases/dup_test.rb index 71b2b16608..4e2adff344 100644 --- a/activerecord/test/cases/dup_test.rb +++ b/activerecord/test/cases/dup_test.rb @@ -107,5 +107,19 @@ module ActiveRecord        assert Topic.after_initialize_called      end +    def test_dup_validity_is_independent +      Topic.validates_presence_of :title +      topic = Topic.new("title" => "Litterature") +      topic.valid? + +      duped = topic.dup +      duped.title = nil +      assert duped.invalid? + +      topic.title = nil +      duped.title = 'Mathematics' +      assert topic.invalid? +      assert duped.valid? +    end    end  end | 
