【发布时间】:2013-05-16 15:29:36
【问题描述】:
我目前正在更改我的 ActiveAdmin 界面的工作方式,以便它集成 attr_accessible 项目和 CanCan。在我的一些模型中,我对表单上的提交按钮有一个特定的控制器操作,例如
= f.actions do
= f.action :submit, label: 'Update Password'
在Update Password 方法中,我可以执行update_attributes(*,as: @admin_user.role.name.to_sym),其中@admin_user 是当前管理员用户。这仅允许具有允许角色的管理员用户更新其密码。
我遇到的问题是 ActiveAdmin 进行通用更新时,特别是
=f.action :submit
如何将选项传递给 ActiveAdmin,以便它在更新时使用指定的角色?我知道按钮使用 Formtasti,:label 方法是其中的一部分,但我似乎找不到任何关于使用传递其他选项的信息。
我的一个选择是为我的每个模型中的编辑方法编写一个覆盖,但这有点违背 ActiveAdmin 的目的,不是吗?
现在,我的 CanCan 能力已经设置为只有某些角色才能访问某些项目。这会覆盖attr_accessible 项目吗?我知道如果该项目 not attr_accessible,即使它在 CanCan 中是可管理的,也不会通过批量分配进行更改。
我真正需要知道的是,如果我是一名黑客,我是否可以注入一个update_attributes(params[:whatever], as: :admin),它会因为 CanCan 的能力而阻止它?通过 attr_accessible 和 CanCan 的能力类同时保护该项目是否值得?
【问题讨论】:
标签: ruby-on-rails-3 activeadmin attr-accessible