diff --git a/lib/cancan/resource_authorization.rb b/lib/cancan/resource_authorization.rb index 1ae67f9..a2a8a4e 100644 --- a/lib/cancan/resource_authorization.rb +++ b/lib/cancan/resource_authorization.rb @@ -48,7 +48,7 @@ module CanCan end def model_name - params[:controller].split('/').last.singularize + params[:controller].sub("Controller", "").underscore.split('/').last.singularize end def collection_actions diff --git a/spec/cancan/resource_authorization_spec.rb b/spec/cancan/resource_authorization_spec.rb index dedd37c..976cee4 100644 --- a/spec/cancan/resource_authorization_spec.rb +++ b/spec/cancan/resource_authorization_spec.rb @@ -20,6 +20,13 @@ describe CanCan::ResourceAuthorization do @controller.instance_variable_get(:@ability).should == :some_resource end + it "should properly load resource for namespaced controller when using '::' for namespace" do + stub(Ability).find(123) { :some_resource } + authorization = CanCan::ResourceAuthorization.new(@controller, :controller => "Admin::AbilitiesController", :action => "show", :id => 123) + authorization.load_resource + @controller.instance_variable_get(:@ability).should == :some_resource + end + it "should build a new resource with hash if params[:id] is not specified" do stub(Ability).new(:foo => "bar") { :some_resource } authorization = CanCan::ResourceAuthorization.new(@controller, :controller => "abilities", :action => "create", :ability => {:foo => "bar"})