Merge pull request #3600 from vijaydev/migration_arity

Checking the arity of the block passed to create_table
This commit is contained in:
José Valim
2011-11-10 09:37:58 -08:00
2 changed files with 22 additions and 1 deletions

View File

@@ -158,7 +158,13 @@ module ActiveRecord
td = table_definition
td.primary_key(options[:primary_key] || Base.get_primary_key(table_name.to_s.singularize)) unless options[:id] == false
td.instance_eval(&blk) if blk
if block_given?
if blk.arity == 1
yield td
else
td.instance_eval(&blk)
end
end
if options[:force] && table_exists?(table_name)
drop_table(table_name)

View File

@@ -1742,6 +1742,21 @@ if ActiveRecord::Base.connection.supports_migrations?
ensure
Person.connection.drop_table :testings rescue nil
end
def test_create_table_should_not_have_mixed_syntax
assert_raise(NoMethodError) do
Person.connection.create_table :testings, :force => true do |t|
t.string :foo
integer :bar
end
end
assert_raise(NameError) do
Person.connection.create_table :testings, :force => true do
t.string :foo
integer :bar
end
end
end
end # SexierMigrationsTest
class MigrationLoggerTest < ActiveRecord::TestCase