port fix for namespaced params from 2.0 back to 1.6

This commit is contained in:
Chris Gunther
2012-01-31 12:01:48 -05:00
committed by Derek Prior
parent 1cdd7b3c18
commit b347c7b78c
2 changed files with 22 additions and 5 deletions

View File

@@ -82,10 +82,7 @@ module CanCan
end
def build_resource
params = @options[:class] \
? @params[@options[:class].to_s.underscore.gsub('/', '_')] \
: @params[name] || {}
resource = resource_base.new(params)
resource = resource_base.new(resource_params || {})
resource.send("#{parent_name}=", parent_resource) if @options[:singleton] && parent_resource
initial_attributes.each do |attr_name, value|
resource.send("#{attr_name}=", value)
@@ -95,7 +92,7 @@ module CanCan
def initial_attributes
current_ability.attributes_for(@params[:action].to_sym, resource_class).delete_if do |key, value|
@params[name] && @params[name].include?(key)
resource_params && resource_params.include?(key)
end
end
@@ -210,6 +207,14 @@ module CanCan
@name || name_from_controller
end
def resource_params
if @options[:class]
@params[@options[:class].to_s.underscore.gsub('/', '_')]
else
@params[namespaced_name.to_s.underscore.gsub("/", "_")]
end
end
def namespaced_name
@name || @params[:controller].sub("Controller", "").singularize.camelize.constantize
rescue NameError