mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
add mini-validator on creating migration
move validation to AR
This commit is contained in:
parent
e8c9f0513d
commit
d965bbfe9f
2 changed files with 16 additions and 0 deletions
|
@ -7,6 +7,7 @@ module ActiveRecord
|
||||||
|
|
||||||
def create_migration_file
|
def create_migration_file
|
||||||
set_local_assigns!
|
set_local_assigns!
|
||||||
|
validate_file_name!
|
||||||
migration_template "migration.rb", "db/migrate/#{file_name}.rb"
|
migration_template "migration.rb", "db/migrate/#{file_name}.rb"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -41,6 +42,14 @@ module ActiveRecord
|
||||||
attribute.name.singularize.foreign_key
|
attribute.name.singularize.foreign_key
|
||||||
end.to_sym
|
end.to_sym
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def validate_file_name!
|
||||||
|
unless file_name =~ /^[_a-z0-9]+$/
|
||||||
|
raise IllegalMigrationNameError.new(file_name)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -29,6 +29,13 @@ class MigrationGeneratorTest < Rails::Generators::TestCase
|
||||||
assert_migration "db/migrate/change_title_body_from_posts.rb", /class #{migration} < ActiveRecord::Migration/
|
assert_migration "db/migrate/change_title_body_from_posts.rb", /class #{migration} < ActiveRecord::Migration/
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_migration_with_invalid_file_name
|
||||||
|
migration = "add_something:datetime"
|
||||||
|
assert_raise ActiveRecord::IllegalMigrationNameError do
|
||||||
|
run_generator [migration]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_add_migration_with_attributes
|
def test_add_migration_with_attributes
|
||||||
migration = "add_title_body_to_posts"
|
migration = "add_title_body_to_posts"
|
||||||
run_generator [migration, "title:string", "body:text"]
|
run_generator [migration, "title:string", "body:text"]
|
||||||
|
|
Loading…
Reference in a new issue