yaz*_*oou 3 ruby-on-rails relationship cancan
我在用户和客户端之间有 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
Run Code Online (Sandbox Code Playgroud)
我的控制器是:
class Admin::ClientsController < ApplicationController
load_and_authorize_resource
end
class Admin::UsersController < ApplicationController
load_and_authorize_resource
end
Run Code Online (Sandbox Code Playgroud)
我的能力中需要这样的东西.rb
user ||= User.new # guest user (not logged in)
can :read, :all
can :manage, Client, :clients_users => { :user_id => user.id }
Run Code Online (Sandbox Code Playgroud)
因此,只有当 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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
973 次 |
| 最近记录: |