首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 6单路由和CanCanCan

Rails 6单路由和CanCanCan
EN

Stack Overflow用户
提问于 2021-10-23 01:40:59
回答 1查看 58关注 0票数 1

我有一个Rails 6应用程序,正在使用CanCanCan对资源进行授权。

对于我的多个资源,CanCanCan使用load_and_authorize方法来查看我的能力,用户可以访问哪些资源。

但我希望用户可以看到自己的帐户。

在我的用户模型中我有

代码语言:javascript
复制
belongs_to :account

一个帐号可以有多个用户。

在我的能力范围内

代码语言:javascript
复制
can [:read], Account, id: user.account_id

这样用户就可以访问:/accounts/:id

但我想让他访问/account

所以我创建了一个单独的资源resource :account

但是我现在怎么加载账户资源呢?我希望CanCanCan能帮我做到这一点。但看起来ir并非如此。用Account.find(id)加载资源真的是唯一的解决方案吗?这似乎不是一个干净的解决方案,因为单个路由路由到复数控制器,在那里我有CanCanCan进行授权。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2021-10-24 15:50:14

这里有几件事。首先,您的路由完全独立于您的Cancancan资源(Cancancan处理资源,而不是路由,尽管这两种情况下的一些术语是相同的。)所以,无论你定义了什么路线,那都与你为Cancancan定义的能力完全不同。

下一步是正确设置您的能力,以便您的用户能够获得正确的记录。在我看来,你的能力是正确的:当@account.id@user.account_id匹配时,用户可以读取帐户记录。

因此,您应该能够使用@user.account并通过您设置的常规Rails关联来获取相关的帐户记录。(我假设帐户为has_many用户,与您为用户模型设置的belongs_to关联的倒数相同。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69684487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档