aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--railties/CHANGELOG2
-rw-r--r--railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb9
-rw-r--r--railties/test/rails_generator_test.rb10
3 files changed, 20 insertions, 1 deletions
diff --git a/railties/CHANGELOG b/railties/CHANGELOG
index 79c43bbe3e..cc536c3424 100644
--- a/railties/CHANGELOG
+++ b/railties/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Fixed scaffold generator when started with only 1 parameter #2609 [self@mattmower.com]
+
* rake should run functional tests even if the unit tests have failures [Jim Weirich]
* Back off cleanpath to be symlink friendly. Closes #2533 [Nicholas Seckar]
diff --git a/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb b/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb
index 7987e888e0..7ac2ac76e9 100644
--- a/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb
+++ b/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb
@@ -46,9 +46,16 @@ class ScaffoldGenerator < Rails::Generator::NamedBase
def initialize(runtime_args, runtime_options = {})
super
- @controller_name = args.shift or (ActiveRecord::Base.pluralize_table_names ? @name.pluralize : @name)
+
+ if runtime_args.length > 1
+ @controller_name = runtime_args[1]
+ else
+ @controller_name = (ActiveRecord::Base.pluralize_table_names ? @name.pluralize : @name)
+ end
+
base_name, @controller_class_path, @controller_file_path, @controller_class_nesting, @controller_class_nesting_depth = extract_modules(@controller_name)
@controller_class_name_without_nesting, @controller_singular_name, @controller_plural_name = inflect_names(base_name)
+
if @controller_class_nesting.empty?
@controller_class_name = @controller_class_name_without_nesting
else
diff --git a/railties/test/rails_generator_test.rb b/railties/test/rails_generator_test.rb
index 00cd94596b..23d843e879 100644
--- a/railties/test/rails_generator_test.rb
+++ b/railties/test/rails_generator_test.rb
@@ -92,4 +92,14 @@ class RailsGeneratorTest < Test::Unit::TestCase
g = Rails::Generator::Base.instance('working', %w(admin/foo bar baz))
assert_equal g.singular_name, g.table_name
end
+
+ def test_scaffold_controller_name
+ # Default behaviour is use the model name
+ g = Rails::Generator::Base.instance('scaffold', %w(Product))
+ assert_equal "Product", g.controller_name
+
+ # When we specify a controller name make sure it sticks!!
+ g = Rails::Generator::Base.instance('scaffold', %w(Product Admin))
+ assert_equal "Admin", g.controller_name
+ end
end