aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/inheritance_test.rb
diff options
context:
space:
mode:
authorMiklos Fazekas <mfazekas@szemafor.com>2014-10-02 10:02:30 +0200
committerMiklos Fazekas <mfazekas@szemafor.com>2015-02-04 15:42:14 +0100
commit5f6370a81bd013b801f3e4842ffd466d756d127d (patch)
treef4901908bbb0331a816027251e6394a0c53653b2 /activerecord/test/cases/inheritance_test.rb
parent1405c7a2cb3539880ebd82c287040b55d289a427 (diff)
downloadrails-5f6370a81bd013b801f3e4842ffd466d756d127d.tar.gz
rails-5f6370a81bd013b801f3e4842ffd466d756d127d.tar.bz2
rails-5f6370a81bd013b801f3e4842ffd466d756d127d.zip
Always reset changed attributes in becomes
When ```becomes``` changes @attributes it should also change @changed_attributes. Otherwise we'll experience a kind of split head situation where attributes are coming from ```self```, but changed_attributes is coming from ```klass.new```. This affects the inheritance_colmn as it's changed by new for example. Fixes #16881
Diffstat (limited to 'activerecord/test/cases/inheritance_test.rb')
-rw-r--r--activerecord/test/cases/inheritance_test.rb6
1 files changed, 6 insertions, 0 deletions
diff --git a/activerecord/test/cases/inheritance_test.rb b/activerecord/test/cases/inheritance_test.rb
index 6b18bfe84f..3268555cb8 100644
--- a/activerecord/test/cases/inheritance_test.rb
+++ b/activerecord/test/cases/inheritance_test.rb
@@ -121,6 +121,12 @@ class InheritanceTest < ActiveRecord::TestCase
assert_kind_of Cabbage, cabbage
end
+ def test_becomes_and_change_tracking_for_inheritance_columns
+ cucumber = Vegetable.find(1)
+ cabbage = cucumber.becomes!(Cabbage)
+ assert_equal ['Cucumber', 'Cabbage'], cabbage.custom_type_change
+ end
+
def test_alt_becomes_bang_resets_inheritance_type_column
vegetable = Vegetable.create!(name: "Red Pepper")
assert_nil vegetable.custom_type