diff options
author | Yves Senn <yves.senn@gmail.com> | 2015-12-02 13:31:20 +0100 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2015-12-02 13:39:30 +0100 |
commit | 3da890f891b116218c10d9b049dba23d15d416cf (patch) | |
tree | 343746a950fa80b31866c6b2813a0d4828f25a76 /activerecord/test/cases | |
parent | 203db6b8c11532eb99e2770dbba326579532aa37 (diff) | |
parent | 6b18bdd00ce1e8eb4a5a30f0f6152e47da9bec42 (diff) | |
download | rails-3da890f891b116218c10d9b049dba23d15d416cf.tar.gz rails-3da890f891b116218c10d9b049dba23d15d416cf.tar.bz2 rails-3da890f891b116218c10d9b049dba23d15d416cf.zip |
Merge pull request #17169 from kuldeepaggarwal/fix-STI-default-type
STI cast new instances to `default type` on initialize.
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r-- | activerecord/test/cases/inheritance_test.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/activerecord/test/cases/inheritance_test.rb b/activerecord/test/cases/inheritance_test.rb index 52e3734dd0..2ad8b30eae 100644 --- a/activerecord/test/cases/inheritance_test.rb +++ b/activerecord/test/cases/inheritance_test.rb @@ -478,4 +478,25 @@ class InheritanceComputeTypeTest < ActiveRecord::TestCase product = Shop::Product.new(:type => phone) assert product.save end + + def test_inheritance_new_with_subclass_as_default + original_type = Company.columns_hash["type"].default + ActiveRecord::Base.connection.change_column_default :companies, :type, 'Firm' + Company.reset_column_information + + firm = Company.new # without arguments + assert_equal 'Firm', firm.type + assert_instance_of Firm, firm + + firm = Company.new(firm_name: 'Shri Hans Plastic') # with arguments + assert_equal 'Firm', firm.type + assert_instance_of Firm, firm + + firm = Company.new(type: 'Client') # overwrite the default type + assert_equal 'Client', firm.type + assert_instance_of Client, firm + ensure + ActiveRecord::Base.connection.change_column_default :companies, :type, original_type + Company.reset_column_information + end end |