gpt4 book ai didi

ruby-on-rails - has_and_belongs_to_many 关联的 CanCanCan 权限

转载 作者:行者123 更新时间:2023-12-04 00:30:51 24 4
gpt4 key购买 nike

我在用户和客户端之间有 has_and_belongs_to_many 关联。表clients_users 有用户和客户端的索引。
我的模型是:

class User < ActiveRecord::Base
rolify
has_and_belongs_to_many :clients
end

class Client < ActiveRecord::Base
resourcify
has_and_belongs_to_many :users
end

我的 Controller 是:
class Admin::ClientsController < ApplicationController
load_and_authorize_resource
end

class Admin::UsersController < ApplicationController
load_and_authorize_resource
end

我的能力中需要这样的东西.rb
user ||= User.new # guest user (not logged in)

can :read, :all
can :manage, Client, :clients_users => { :user_id => user.id }

因此,只有当 clients_users 表中的记录包含该客户端的 user_id 和 id 时,我才能管理客户端。我如何使它工作?

最佳答案

当您使用 has_and_belongs_to_many那么你就无权访问连接模型,仅仅是因为没有连接模型,如果你想访问它,那么你需要做 has_many :through反而。

但是在您的情况下,您实际上并不需要访问连接模型,因为 Client有一个 users属性,和 User有一个 clients属性,那么为什么不直接使用它:

我认为这样的事情应该有效

can :manage, Client, id: user.clients.pluck(:id)

关于ruby-on-rails - has_and_belongs_to_many 关联的 CanCanCan 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28604237/

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