From 12c3e986f035db9268ee7c179b0c01d1e31a7f5d Mon Sep 17 00:00:00 2001 From: Phil Smith Date: Sat, 20 Mar 2010 00:32:28 -0700 Subject: [PATCH] Breaking NamedBase#table_name into #table_name and #table_path. [#4230 state:resolved] table_name now omits any leading namespace parts, table_path keeps them (in the same way #table_name used to.) --- .../active_record/model/model_generator.rb | 2 +- railties/lib/rails/generators/named_base.rb | 11 ++++++----- railties/test/generators/model_generator_test.rb | 4 ++-- railties/test/generators/named_base_test.rb | 10 +++++++--- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/activerecord/lib/generators/active_record/model/model_generator.rb b/activerecord/lib/generators/active_record/model/model_generator.rb index 2641083..64d9e31 100644 --- a/activerecord/lib/generators/active_record/model/model_generator.rb +++ b/activerecord/lib/generators/active_record/model/model_generator.rb @@ -13,7 +13,7 @@ module ActiveRecord def create_migration_file return unless options[:migration] && options[:parent].nil? - migration_template "migration.rb", "db/migrate/create_#{table_name}.rb" + migration_template "migration.rb", "db/migrate/create_#{table_path}.rb" end def create_model_file diff --git a/railties/lib/rails/generators/named_base.rb b/railties/lib/rails/generators/named_base.rb index 8d1dfbd..e82731d 100644 --- a/railties/lib/rails/generators/named_base.rb +++ b/railties/lib/rails/generators/named_base.rb @@ -39,14 +39,15 @@ module Rails @i18n_scope ||= file_path.gsub('/', '.') end + def table_path + @table_path ||= (class_path + [table_name]).join('_') + end + def table_name - @table_name ||= begin - base = pluralize_table_names? ? plural_name : singular_name - (class_path + [base]).join('_') - end + @table_name ||= pluralize_table_names? ? plural_name : singular_name end - # Tries to retrieve the application name or simple return application. + # Tries to retrieve the application name or simply return "application". def application_name if defined?(Rails) && Rails.application Rails.application.class.name.split('::').first.underscore diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb index 79ce9a2..ed47e05 100644 --- a/railties/test/generators/model_generator_test.rb +++ b/railties/test/generators/model_generator_test.rb @@ -43,7 +43,7 @@ class ModelGeneratorTest < Rails::Generators::TestCase assert_no_migration "db/migrate/create_images" assert_no_migration "db/migrate/create_gallery_images" assert_migration "db/migrate/create_admin_gallery_images", /class CreateAdminGalleryImages < ActiveRecord::Migration/ - assert_migration "db/migrate/create_admin_gallery_images", /create_table :admin_gallery_images/ + assert_migration "db/migrate/create_admin_gallery_images", /create_table :images/ end def test_migration_with_nested_namespace_without_pluralization @@ -53,7 +53,7 @@ class ModelGeneratorTest < Rails::Generators::TestCase assert_no_migration "db/migrate/create_gallery_images" assert_no_migration "db/migrate/create_admin_gallery_images" assert_migration "db/migrate/create_admin_gallery_image", /class CreateAdminGalleryImage < ActiveRecord::Migration/ - assert_migration "db/migrate/create_admin_gallery_image", /create_table :admin_gallery_image/ + assert_migration "db/migrate/create_admin_gallery_image", /create_table :image/ ensure ActiveRecord::Base.pluralize_table_names = true end diff --git a/railties/test/generators/named_base_test.rb b/railties/test/generators/named_base_test.rb index d30880d..dba1653 100644 --- a/railties/test/generators/named_base_test.rb +++ b/railties/test/generators/named_base_test.rb @@ -26,6 +26,7 @@ class NamedBaseTest < Rails::Generators::TestCase assert_name g, 'line_item', :singular_name assert_name g, 'line_items', :plural_name assert_name g, 'line_item', :i18n_scope + assert_name g, 'line_items', :table_path assert_name g, 'line_items', :table_name end @@ -40,7 +41,8 @@ class NamedBaseTest < Rails::Generators::TestCase assert_name g, 'foo', :singular_name assert_name g, 'foos', :plural_name assert_name g, 'admin.foo', :i18n_scope - assert_name g, 'admin_foos', :table_name + assert_name g, 'admin_foos', :table_path + assert_name g, 'foos', :table_name end def test_named_generator_attributes_as_ruby @@ -54,13 +56,15 @@ class NamedBaseTest < Rails::Generators::TestCase assert_name g, 'Foo', :human_name assert_name g, 'foos', :plural_name assert_name g, 'admin.foo', :i18n_scope - assert_name g, 'admin_foos', :table_name + assert_name g, 'admin_foos', :table_path + assert_name g, 'foos', :table_name end def test_named_generator_attributes_without_pluralized ActiveRecord::Base.pluralize_table_names = false g = generator ['admin/foo'] - assert_name g, 'admin_foo', :table_name + assert_name g, 'admin_foo', :table_path + assert_name g, 'foo', :table_name ensure ActiveRecord::Base.pluralize_table_names = true end -- 1.6.6