From f2a16956363b73b4f3dd0db4622aa257e9e865ad Mon Sep 17 00:00:00 2001 From: Ryan Bates Date: Thu, 15 Apr 2010 13:10:12 -0700 Subject: [PATCH] properly handle Admin::AbilitiesController in params[:controller] - closes #46 --- lib/cancan/resource_authorization.rb | 2 +- spec/cancan/resource_authorization_spec.rb | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) 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"})