我承诺自定义一个具有cancan身份验证的项目。
我的康灿ability.rb
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
当我从经理角色访问此页面时,它会重定向到登录页面
(在我的管理命名空间的索引控制器的索引操作中,我重定向到nil用户的登录页面)
为什么会这样?
答案 0 :(得分:7)
您无法作为管理员访问ListingDetail
控制器,因为您只被授予Listing
对象的权限。要仅在您拥有的ListingDetails
上添加Listings
的权限,请将以下内容添加到您的经理权限中:
can :manage, ListingDetail, :listing => {user_id => user.id}