通过模型关系使用 CanCan 授权操作

发布于 2024-10-31 09:52:52 字数 447 浏览 7 评论 0原文

我在应用程序中使用 CanCan 和 Devise 进行身份验证过程,一切都运行良好。

但是,我们有一个设置,用户可以在其中创建项目列表。

List 模型有一个 user_id 并且身份验证可以正常工作,但是项目的所有权是通过 List :has_many Item 关系处理的,而 Item 实际上没有 user_id 列。

CanCan 如何处理这个问题?

我尝试过

can :manage, Item do |item|
  item.list.user_id = user.id
end

,但在 url 上输入项目 ID 可以让每个用户访问每个项目,无论列表所有权如何。

我在 Cancan 的 github 上的 wiki 中找不到任何似乎涵盖此内容的内容,因此希望这里有人能够提供帮助

期待评论 谢谢

I'm using CanCan and Devise for the auth processes in an app and everything is working perfectly.

However, we have a setup in which users can create lists of items.

The List model has a user_id and the auth works fine on that, but the ownership of items is handled through the List :has_many Item relationship and Item doesn't actually have a user_id column.

How does CanCan handle this?

I tried

can :manage, Item do |item|
  item.list.user_id = user.id
end

but typing the Item id on the url gives every user access to every item, regardless of the List ownership.

I couldn't find anything that seemed to cover this in the wiki on Cancan's github so hoping someone here might be able to help

Looking forward to comments
Thanks

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

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

发布评论

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

评论(1

燃情 2024-11-07 09:52:52

您是否将 === 混淆了?

can :manage, Item do |item|
  item.list.user_id == user.id
end

Did you confuse = with ==?

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