Skip to content

Instantly share code, notes, and snippets.

@senny
Created July 16, 2013 08:36
Show Gist options
  • Save senny/6006933 to your computer and use it in GitHub Desktop.
Save senny/6006933 to your computer and use it in GitHub Desktop.
diff --git a/railties/lib/rails/generators/named_base.rb b/railties/lib/rails/generators/named_base.rb
index 9e4fa95..f26dc46 100644
--- a/railties/lib/rails/generators/named_base.rb
+++ b/railties/lib/rails/generators/named_base.rb
@@ -14,7 +14,6 @@ module Rails
# Unfreeze name in case it's given as a frozen string
args[0] = args[0].dup if args[0].is_a?(String) && args[0].frozen?
super
- self.name = options[:model_name] if options[:model_name]
assign_names!(self.name)
parse_attributes! if respond_to?(:attributes)
end
diff --git a/railties/lib/rails/generators/resource_helpers.rb b/railties/lib/rails/generators/resource_helpers.rb
index ca25535..a01eb57 100644
--- a/railties/lib/rails/generators/resource_helpers.rb
+++ b/railties/lib/rails/generators/resource_helpers.rb
@@ -15,19 +15,24 @@ module Rails
# Set controller variables on initialization.
def initialize(*args) #:nodoc:
super
- model_name = self.name
- controller_name = (options[:model_name]) ? args[0][0] : self.name
+ if options[:model_name]
+ controller_name = name
+ self.name = options[:model_name]
+ assign_names!(self.name)
+ else
+ controller_name = name
+ end
- if model_name == model_name.pluralize && model_name.singularize != model_name.pluralize && !options[:force_plural]
+ if name == name.pluralize && name.singularize != name.pluralize && !options[:force_plural]
unless ResourceHelpers.skip_warn
say "Plural version of the model detected, using singularized version. Override with --force-plural."
ResourceHelpers.skip_warn = true
end
- model_name.replace model_name.singularize
- assign_names!(model_name)
+ name.replace name.singularize
+ assign_names!(name)
end
- assign_controller_names(controller_name.pluralize)
+ assign_controller_names!(controller_name.pluralize)
end
protected
@@ -42,7 +47,7 @@ module Rails
end
end
- def assign_controller_names(name)
+ def assign_controller_names!(name)
@controller_name = name
@controller_class_path = name.include?('/') ? name.split('/') : name.split('::')
@controller_class_path.map! { |m| m.underscore }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment