我的能力文件有
if user.has_role? :admin
can :manage, :all
else
can :manage, Company, :id => Company.with_role(:operator, user).pluck(:id)
...
end
我的公司控制人索引有
def index
@companies = Company.with_role(:operator, current_user)
但是,当我以经营公司的用户身份登录时,我无法访问该页面。(即使 Company.with_role(:operator, user) 在控制台中返回一个关系!)
公司有代码。我不知道如何在康康语中写这个:
Company.with_role(:operator, user).map{|o| o.codes}
但是 wiki 说如果我使用块然后 authorize_resource 将不会设置实例变量@codes
,因为它不知道哪些对象属于用户。所以我不能使用:
can :manage, Code => do |Code|
user.has_role? :operator, code.company
end
我正在寻找可以让我的 CodesController 执行以下操作的解决方案:
def index
if params[:company_id]
@keywords = Code.where(:company_id => params[:company_id])
end
operator
并以其他方式向用户显示他们拥有角色的所有公司的所有代码。