【发布时间】:2021-09-09 03:40:02
【问题描述】:
在 Rails 5 应用程序中,我有一个 shortlist 模型与 user 模型的 HABTM 关系,用户由 Devise 控制。这一切都按预期工作,每个用户都可以看到自己的候选名单(仅)。
class Shortlist < ApplicationRecord
has_and_belongs_to_many :users
...
class User < ApplicationRecord
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable
has_and_belongs_to_many :shortlists
...
class ShortlistsController < ApplicationController
def index
@shortlists = current_user.shortlists
...
现在我希望允许用户与其他用户“共享”候选名单,这些用户将对共享的候选名单拥有只读访问权限。
我可以将第二个用户添加到候选名单 (@shortlist.users << User.second),但这会给他们完全的读写权限。
cancancan gem 看起来很有希望,但我不确定如何配置这些功能,以允许 User1 完全控制他们的候选名单,以及授予 User2 对 User1 与他们共享的候选名单的只读访问权限。
如何将第二个用户限制为只读访问权限?
【问题讨论】:
-
CanCanCan 看起来很有希望,直到你不得不做一些稍微复杂的事情并且它愚蠢的 DSL 阻碍了你。几年前,我将所有应用程序都更改为 Pundit。一开始有点难以理解,但它只是普通的旧 OOP 并且可以更好地处理复杂性。
标签: ruby-on-rails devise relationship has-and-belongs-to-many cancancan