在cancan中,如何检查是否可以?管理给定模型的每条记录

发布于 2024-11-30 23:38:27 字数 168 浏览 0 评论 0原文

  1. 我的管理员可以:管理、Widget
  2. 我的用户可以:管理、Widget、:user_id => user.id
  3. 在我看来,只有当前用户可以管理每个 Widget 记录时,我才想显示链接。
  1. My admin can :manage, Widget
  2. My user can :manage, Widget, :user_id => user.id
  3. In my view, I want to show a link only if the current_user can manage each and every Widget record.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

囍孤女 2024-12-07 23:38:28

一般来说?

可以吗? :manage, Widget

如果您指的是对现有记录的一些检查,这听起来像是一个设计缺陷,但这应该可行。请注意,如果您采用的是这种方法,则在进行此检查后,您会遇到与创建的其他 Widget 记录的竞争条件。

(可以?:管理,小部件)|| (Widget.count == Widget.count(:conditions => ["user_id == ?", current_user.id]))

In general?

can? :manage, Widget

If you're referring to some check on existing records, that sounds like a design flaw, but this should work. Note that if this is the approach you're taking, you have a race condition with other Widget records being created after you make this check.

(can? :manage, Widget) || (Widget.count == Widget.count(:conditions => ["user_id == ?", current_user.id]))

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文