From ebfd03b938d2cb996bc5786768e339b7221a724d Mon Sep 17 00:00:00 2001 From: Rick Olson Date: Fri, 11 Jan 2008 19:54:19 +0000 Subject: Fix issue where Table#references doesn't pass a :null option to a *_type attribute for polymorphic associations. Closes #10753 [railsjitsu] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8627 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/CHANGELOG | 2 ++ .../connection_adapters/abstract/schema_definitions.rb | 4 +--- activerecord/test/migration_test.rb | 8 ++++++++ 3 files changed, 11 insertions(+), 3 deletions(-) (limited to 'activerecord') diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index 773e4ce90e..d3b5a38ec8 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fix issue where Table#references doesn't pass a :null option to a *_type attribute for polymorphic associations. Closes #10753 [railsjitsu] + * Fixtures: removed support for the ancient pre-YAML file format. #10736 [John Barnette] * More thoroughly quote table names. #10698 [dimdenis, lotswholetime, Jeremy Kemper] diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb index 79b66be8ef..8b2f3ad5d4 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb @@ -453,9 +453,7 @@ module ActiveRecord polymorphic = options.delete(:polymorphic) args.each do |col| column("#{col}_id", :integer, options) - unless polymorphic.nil? - column("#{col}_type", :string, polymorphic.is_a?(Hash) ? polymorphic : {}) - end + column("#{col}_type", :string, polymorphic.is_a?(Hash) ? polymorphic : options) unless polymorphic.nil? end end alias :belongs_to :references diff --git a/activerecord/test/migration_test.rb b/activerecord/test/migration_test.rb index 3b74604c44..f2683f3aef 100644 --- a/activerecord/test/migration_test.rb +++ b/activerecord/test/migration_test.rb @@ -925,6 +925,14 @@ if ActiveRecord::Base.connection.supports_migrations? end end + def test_references_column_type_with_polymorphic_and_options_null_is_false_adds_table_flag + with_new_table do |t| + t.expects(:column).with('taggable_type', :string, {:null => false}) + t.expects(:column).with('taggable_id', :integer, {:null => false}) + t.references :taggable, :polymorphic => true, :null => false + end + end + def test_belongs_to_works_like_references with_new_table do |t| t.expects(:column).with('customer_id', :integer, {}) -- cgit v1.2.3