Skip to content

Commit

Permalink
Fixed generating a namespaced model with table pluralization turned o…
Browse files Browse the repository at this point in the history
…ff. Add tests for namespaced model generation.

[#767 state:committed]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
  • Loading branch information
hugopeixoto authored and jeremy committed Aug 9, 2009
1 parent a0caad5 commit 22b38c1
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ class ModelGenerator < Base

def create_migration_file
if options[:migration] && options[:parent].nil?
file_name = "create_#{file_path.gsub(/\//, '_').pluralize}"
klass_name = file_path.gsub(/\//, '_')
klass_name = klass_name.pluralize if ActiveRecord::Base.pluralize_table_names
file_name = "create_#{klass_name}"
migration_template "migration.rb", "db/migrate/#{file_name}.rb"
end
end
Expand Down
3 changes: 2 additions & 1 deletion railties/lib/generators/named_base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,15 @@ def assign_names!(given_name) #:nodoc:
else
singular_name
end
@table_name.gsub! '/', '_'

if class_nesting.empty?
@class_name = class_name_without_nesting
else
@table_name = class_nesting.underscore << "_" << @table_name
@class_name = "#{class_nesting}::#{class_name_without_nesting}"
end

@table_name.gsub! '/', '_'
end

# Convert attributes hash into an array with GeneratedAttribute objects.
Expand Down
44 changes: 44 additions & 0 deletions railties/test/generators/model_generator_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,50 @@ def test_migration
assert_migration "db/migrate/create_accounts.rb", /class CreateAccounts < ActiveRecord::Migration/
end

def test_migration_with_namespace
run_generator ["Gallery::Image"]
assert_migration "db/migrate/create_gallery_images", /class CreateGalleryImages < ActiveRecord::Migration/
assert_no_migration "db/migrate/create_images"
end

def test_migration_with_nested_namespace
run_generator ["Admin::Gallery::Image"]
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/
end

def test_migration_with_nested_namespace_without_pluralization
ActiveRecord::Base.pluralize_table_names = false
run_generator ["Admin::Gallery::Image"]
assert_no_migration "db/migrate/create_images"
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/
ensure
ActiveRecord::Base.pluralize_table_names = true
end

def test_migration_with_namespaces_in_model_name_without_plurization
ActiveRecord::Base.pluralize_table_names = false
run_generator ["Gallery::Image"]
assert_migration "db/migrate/create_gallery_image", /class CreateGalleryImage < ActiveRecord::Migration/
assert_no_migration "db/migrate/create_gallery_images"
ensure
ActiveRecord::Base.pluralize_table_names = true
end

def test_migration_without_pluralization
ActiveRecord::Base.pluralize_table_names = false
run_generator
assert_migration "db/migrate/create_account", /class CreateAccount < ActiveRecord::Migration/
assert_no_migration "db/migrate/create_accounts"
ensure
ActiveRecord::Base.pluralize_table_names = true
end

def test_migration_is_skipped
run_generator ["account", "--no-migration"]
assert_no_migration "db/migrate/create_accounts.rb"
Expand Down

0 comments on commit 22b38c1

Please sign in to comment.