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
This commit is contained in:
Rick Olson
2008-01-11 19:54:19 +00:00
parent 5d1a305f06
commit ebfd03b938
3 changed files with 11 additions and 3 deletions

View File

@@ -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]

View File

@@ -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

View File

@@ -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, {})