【发布时间】:2019-06-27 14:17:03
【问题描述】:
我正在进行一个非常标准的用户/角色设置(用户 HABTM 角色,角色 HABTM 用户)。我正在使用 CanCanCan 进行授权,您所拥有的角色定义了您可以围绕应用程序执行的操作。这部分一切正常,但现在我希望能够让用户继承角色,作为订阅不同成员资格的一部分。
以下是相关型号:
class User < ApplicationRecord
has_and_belongs_to_many :roles
has_one :membership_subscription
has_one :membership, through: :membership_subscription
end
class Role < ApplicationRecord
has_and_belongs_to_many :users
end
class MembershipSubscription < ApplicationRecord
belongs_to :user
belongs_to :membership
end
class Membership < ApplicationRecord
has_many :membership_subscriptions
has_many :users, through: :membership_subscriptions
end
我在想我也许可以只添加一个has_many: roles 关联到会员资格,然后说用户has_many 角色通过他们订阅会员资格,以及当前允许角色的HABTM 关联直接分配。
通过这种方式,您可以像现在一样直接将角色附加到用户(因为某些角色是附加的,与会员订阅/类型完全无关),但用户也会自动继承角色(并再次失去它们)作为他们的会员来来去去。
这有意义吗?我想另一种选择是在模型中使用回调来处理创建/删除角色关联,但它看起来并不优雅。
非常感谢任何建议!
【问题讨论】:
标签: ruby-on-rails activerecord authorization associations roles