小编P.B*_*Bra的帖子

CanCan 关联能力

我的问题是关于在以下上下文中定义 cancancan 能力。

我有一个通用模型,在用户和公司实体之间存在多对多关系

class User < ApplicationRecord
    has_many :company_users, dependent: :destroy
    has_many :companies, through: :company_users 
    enum role:[:user, :admin, :superadmin]
end

class Company < ApplicationRecord
    has_many :company_users, dependent: :destroy
    has_many :users, through: :company_users
end

class CompanyUser < ApplicationRecord
    belongs_to :company
    belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

我现在想定义 cancan 能力,以便授权当前用户管理与他属于同一公司的所有用户。

我对其他多对多模式(例如:设备和公司之间的多对多)没有问题

can :manage, Device, :companies => {:users => {:id => user.id}}
Run Code Online (Sandbox Code Playgroud)

工作正常!

can :manage, User, :companies => {:users => {:id => user.id}}
Run Code Online (Sandbox Code Playgroud)

让我看看,当然,只有当前用户,因为它在同一个用户表上。

如何轻松管理属于同一公司的用户之间的这种能力,并保留多对多关系?

谢谢你的帮助

many-to-many ruby-on-rails associations cancan cancancan

2
推荐指数
1
解决办法
1514
查看次数