2011-07-22 82 views
2

我承诺定制一个项目,该项目具有cancan身份验证。 我的康康舞ability.rbRails cancan load_and_authorize_resource不起作用

if user.has_role? :super_admin 
    can :manage, :all 
elsif user.has_role? :site_admin 
    can :manage, [User, Listing] 
elsif user.has_role? :manager 
    can :manage, Listing, :user_id => user.id 
end 

我的模型:

User

Listing has_many :listing_types

ListingType belongs_to :listing

现在我创建了一个新的模式ListingDetail belongs_to :listing

控制器listing_details具有load_and_authorize_resource 当我访问来自经理的角色这个页面,它重定向到登录页面 (在我的管理命名空间的指数控制器的索引操作重定向我登陆了零用户页面) 为什么发生这种情况?

回答

7

作为管理员,您不能访问ListingDetail控制器,因为您只有被授予Listing对象的权限。要为ListingDetails只在Listings你自己添加权限,以下内容添加到您的管理员权限:

can :manage, ListingDetail, :listing => {user_id => user.id} 
+0

好,谢谢,现在它的作品! – arivarasan

+2

您应该点击复选标记以确认答案是否正确,然后您接受答案。 – Mirko