Rails - 允许人们在记录之间添加关联,但只允许管理员删除它

Posted

技术标签:

【中文标题】Rails - 允许人们在记录之间添加关联,但只允许管理员删除它【英文标题】:Rails - allow people to add association between records, but only allow admins to remove it 【发布时间】:2012-04-25 10:10:50 【问题描述】:

我有一个具有以下模型的应用:人员、项目、ProjectsAdminLists。

人与项目之间存在 HABTM 关联。每个项目都有一个 ProjectAdminsList,每个项目都可以有很多人。

属于每个项目的人可以将其他人添加到其中,但我想将此关联的删除限制为属于 ProjectAdminsList 的人。在视图中限制这一点很简单,但是在控制器中最好的方法是什么?我正在寻找这方面的一般指导。

【问题讨论】:

【参考方案1】:

您需要某种授权系统,我建议您看一下 Ryan Bates(RailsCasts 人)编写的 CanCan gem,您可以在 Authorization with CanCan RailsCast 开始观看,然后查看非常好的文档.

这里是一个概述:

它只需要一个current_user 方法来确定当前登录的用户 您将授权规则写入单个文件 (ability.rb) 您在视图层使用can? 方法来检查用户是否可以对某物进行某些操作 在控件中调用load_and_authorize_resource,使CanCan自动根据ability.rb文件进行授权检查。

当然,我只是触及了表面,因为文档确实很好。

【讨论】:

我已经实现了一些基本的权限检查,但 CanCan 看起来确实不错。会试试看。

以上是关于Rails - 允许人们在记录之间添加关联,但只允许管理员删除它的主要内容,如果未能解决你的问题,请参考以下文章

Rails引用相同模型的活动记录关联

Rails 3.2 - 在现有表单上添加新关联

rails中的多态关联

Rails复杂模型关联,用户和团队之间的共享文档

Rails - 如何在保存后刷新关联

如何在 Rails 2.3.8 中使用带有关联的 Active 脚手架列出活动记录?