【问题标题】:Using the ActiveAdmin Submit button in relation to attr_accessible使用与 attr_accessible 相关的 ActiveAdmin 提交按钮
【发布时间】: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


    【解决方案1】:

    ActiveAdmin 和 SimpleForm 不支持我尝试使用的 as: [role] 功能。但是,这不是 Rails 4 中的 strong_parameters 的问题,因为它是一种完全不同的处理质量分配的方式。

    此外,CanCan 确实阻止了任何批量分配黑客,因为除非您有权访问表单,否则您无法批量分配,并且如果您没有明确的 :edit, :update, or :manage 权限,那么您无权访问表格。

    【讨论】:

      猜你喜欢
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 2014-12-03
      • 2020-03-31
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      相关资源
      最近更新 更多