Rails cancan load_and_authorize_resource无法正常工作

时间:2011-07-22 13:53:50

标签: ruby-on-rails-3 authorization cancan

我承诺自定义一个具有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用户的登录页面) 为什么会这样?

1 个答案:

答案 0 :(得分:7)

您无法作为管理员访问ListingDetail控制器,因为您只被授予Listing对象的权限。要仅在您拥有的ListingDetails上添加Listings的权限,请将以下内容添加到您的经理权限中:

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