[英]CanCanCan permissions for has_and_belongs_to_many association
我在用戶和客戶端之間具有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
我的控制器是:
class Admin::ClientsController < ApplicationController
load_and_authorize_resource
end
class Admin::UsersController < ApplicationController
load_and_authorize_resource
end
我的能力需要這樣的東西
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_and_belongs_to_many
訪問has_and_belongs_to_many
模型,這僅僅是因為沒有has_and_belongs_to_many
模型,如果要訪問該has_and_belongs_to_many
模型,則需要執行has_many :through
。
但是在您的情況下,您實際上並不需要訪問連接模型,因為Client
有一個users
屬性,而User
有一個clients
屬性,所以為什么不使用它呢?
我認為這樣的事情應該起作用
can :manage, Client, id: user.clients.pluck(:id)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.