diff options
author | Guillermo Iguaran <guilleiguaran@gmail.com> | 2013-12-27 15:02:57 -0500 |
---|---|---|
committer | Guillermo Iguaran <guilleiguaran@gmail.com> | 2013-12-27 15:02:57 -0500 |
commit | 04108f214c9bc43c2cd139f46718395c062bed46 (patch) | |
tree | 84c0ee90af43866847fed74509f775d91e05c34d /activerecord | |
parent | ef28028c45c6b19f161c74ada460c4590f5ef49d (diff) | |
parent | 4fd3204a048b0c2dea0620e96f989a305f052629 (diff) | |
download | rails-04108f214c9bc43c2cd139f46718395c062bed46.tar.gz rails-04108f214c9bc43c2cd139f46718395c062bed46.tar.bz2 rails-04108f214c9bc43c2cd139f46718395c062bed46.zip |
Merge branch 'master' of github.com:rails/rails
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/persistence.rb | 1 | ||||
-rw-r--r-- | activerecord/test/cases/persistence_test.rb | 14 |
2 files changed, 15 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/persistence.rb b/activerecord/lib/active_record/persistence.rb index 0cd5c09399..309bb980e3 100644 --- a/activerecord/lib/active_record/persistence.rb +++ b/activerecord/lib/active_record/persistence.rb @@ -181,6 +181,7 @@ module ActiveRecord became = klass.new became.instance_variable_set("@attributes", @attributes) became.instance_variable_set("@attributes_cache", @attributes_cache) + became.instance_variable_set("@changed_attributes", @changed_attributes) became.instance_variable_set("@new_record", new_record?) became.instance_variable_set("@destroyed", destroyed?) became.instance_variable_set("@errors", errors) diff --git a/activerecord/test/cases/persistence_test.rb b/activerecord/test/cases/persistence_test.rb index 6cd3e2154e..6f1e518f45 100644 --- a/activerecord/test/cases/persistence_test.rb +++ b/activerecord/test/cases/persistence_test.rb @@ -152,6 +152,20 @@ class PersistenceTest < ActiveRecord::TestCase assert_equal original_errors, client.errors end + def test_dupd_becomes_persists_changes_from_the_original + original = topics(:first) + copy = original.dup.becomes(Reply) + copy.save! + assert_equal "The First Topic", Topic.find(copy.id).title + end + + def test_becomes_includes_changed_attributes + company = Company.new(name: "37signals") + client = company.becomes(Client) + assert_equal "37signals", client.name + assert_equal %w{name}, client.changed + end + def test_delete_many original_count = Topic.count Topic.delete(deleting = [1, 2]) |