diff options
author | Yves Senn <yves.senn@gmail.com> | 2014-03-25 16:03:51 +0100 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2014-03-25 16:03:51 +0100 |
commit | c35fb52c0cdd235cb69380df722c343ff5fa0bfa (patch) | |
tree | b22a9daaeb6b054d109f45da87b8a245c967b629 /railties | |
parent | 3fd15f484c2e0ddd8e4142d8c644767320920146 (diff) | |
parent | 5a3817cb16e526a7b18699a6dcdafe40c42c1ddf (diff) | |
download | rails-c35fb52c0cdd235cb69380df722c343ff5fa0bfa.tar.gz rails-c35fb52c0cdd235cb69380df722c343ff5fa0bfa.tar.bz2 rails-c35fb52c0cdd235cb69380df722c343ff5fa0bfa.zip |
Merge pull request #13440 from kuldeepaggarwal/pluralize_table_name_issue
Generating proper migration when ActiveRecord::Base.pluralize_table_names = false
Diffstat (limited to 'railties')
-rw-r--r-- | railties/lib/rails/generators/generated_attribute.rb | 4 | ||||
-rw-r--r-- | railties/test/generators/migration_generator_test.rb | 50 |
2 files changed, 54 insertions, 0 deletions
diff --git a/railties/lib/rails/generators/generated_attribute.rb b/railties/lib/rails/generators/generated_attribute.rb index 5e2784c4b0..c5326d70d1 100644 --- a/railties/lib/rails/generators/generated_attribute.rb +++ b/railties/lib/rails/generators/generated_attribute.rb @@ -94,6 +94,10 @@ module Rails name.sub(/_id$/, '').pluralize end + def singular_name + name.sub(/_id$/, '').singularize + end + def human_name name.humanize end diff --git a/railties/test/generators/migration_generator_test.rb b/railties/test/generators/migration_generator_test.rb index d876597944..6fac643ed0 100644 --- a/railties/test/generators/migration_generator_test.rb +++ b/railties/test/generators/migration_generator_test.rb @@ -197,4 +197,54 @@ class MigrationGeneratorTest < Rails::Generators::TestCase def test_properly_identifies_usage_file assert generator_class.send(:usage_path) end + + def test_migration_with_singular_table_name + with_singular_table_name do + migration = "add_title_body_to_post" + run_generator [migration, 'title:string'] + assert_migration "db/migrate/#{migration}.rb" do |content| + assert_method :change, content do |change| + assert_match(/add_column :post, :title, :string/, change) + end + end + end + end + + def test_create_join_table_migration_with_singular_table_name + with_singular_table_name do + migration = "add_media_join_table" + run_generator [migration, "artist_id", "music:uniq"] + + assert_migration "db/migrate/#{migration}.rb" do |content| + assert_method :change, content do |change| + assert_match(/create_join_table :artist, :music/, change) + assert_match(/# t.index \[:artist_id, :music_id\]/, change) + assert_match(/ t.index \[:music_id, :artist_id\], unique: true/, change) + end + end + end + end + + def test_create_table_migration_with_singular_table_name + with_singular_table_name do + run_generator ["create_book", "title:string", "content:text"] + assert_migration "db/migrate/create_book.rb" do |content| + assert_method :change, content do |change| + assert_match(/create_table :book/, change) + assert_match(/ t\.string :title/, change) + assert_match(/ t\.text :content/, change) + end + end + end + end + + private + + def with_singular_table_name + old_state = ActiveRecord::Base.pluralize_table_names + ActiveRecord::Base.pluralize_table_names = false + yield + ensure + ActiveRecord::Base.pluralize_table_names = old_state + end end |