gpt4 book ai didi

ruby-on-rails - Cancan 嵌套路由限制访问 :index

转载 作者:行者123 更新时间:2023-12-04 05:57:11 25 4
gpt4 key购买 nike

我对 cancan 和嵌套路由有一些问题。

我有这样的路线:

resources :companies do
resources :projects
end

我对 Company 模型的能力没有问题,但是对于 Project 模型,如果他们不是公司的管理员,我想拒绝对 Project#index 的访问。

下一个代码有效:
can :show, Company do |company|
if user.admins.include?(company) #check if the user is admin of the company
can :index, Schedule, :company_id => company.id
end
end

但我该怎么做:
can? :index, Project

我尝试通过重命名这样的方法:
can :index_projects, Company do |company|
if user.admins.include?(company) #check if the user is admin of the company
can :index, Schedule, :company_id => company.id
end
end

并使用:
can? :index_projects, @company

但它不起作用。你知道怎么做吗?

谢谢。

最佳答案

你需要在你的 ProjectsController 中使用这样的东西:

class ProjectsController < ApplicationController
def index
authorize! :index, Ability
@projects = Project.order(:created_at)
end
end

当您尝试访问 Projects#index CanCan 将检查能力并根据用户能力拒绝或允许访问

证明链接 https://github.com/ryanb/cancan/issues/209#issuecomment-609043

希望这是你需要的 =]

关于ruby-on-rails - Cancan 嵌套路由限制访问 :index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9371781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com