【发布时间】:2017-12-13 15:37:54
【问题描述】:
在我看来,ActiveAdmin 应该主要在两种情况下检查创建授权:
-
UI 需要显示“创建新工单”按钮:在这里,检查 current_user 是否有创建通用工单的权限很有用。
Cancancan 语法如下所示:
user.can?(:create, Ticket) -
ActiveAdmin 需要了解资源是否可以在表单提交后实际存储在数据库中:在这里检查当前用户是否可以使用表单“键入”的值存储该票很有用。
Cancancan 语法如下所示:
user.can?(:create, Ticket.new({author_id: user.id, some: "x", other: "y", values: "z"}))
就是这样!那么为什么 ActiveAdmin 会在为用户显示生成的“创建表单”之前检查以下权限?
user.can?(:create, Ticket.new({author_id: nil, some: nil, other: nil, values: nil}))
如果当前用户只有在author_id = own_user_id 处创建票证的权限怎么办?
在看到表单之前授权就会失败。
【问题讨论】:
标签: ruby-on-rails activeadmin cancancan