如何获取特定控制器操作的允许参数列表

时间:2016-10-07 18:07:29

标签: ruby-on-rails-4 controller strong-parameters

问题的标题几乎描述了我需要做的事情。它与这个问题基本相同,从未得到答案:

Rails 4: get list of permitted attributes (strong parameters) from a controller

与该问题中提供的示例类似,如果它存在,它将等同于此类:

account_update_permitted_params = AccountController.permitted_params(:update)

1 个答案:

答案 0 :(得分:1)

由于强参数的性质,你基本上不能这样做。

您在some_resource_attributes中定义的内容旨在过滤请求的参数哈希值。如果查看方法定义,您将看到params.require(:some_resource).permit.. - 它在params对象上运行,该对象仅在请求期间出现。

因此,使用这种方法似乎没什么用处。

如果您真的想以编程方式访问some_resource_attributes中列入白名单的属性,可以使用:

class ResourceController < ApplicationController
  LIST = %i(foo bar baz)

  private

  def resource_attributes
    params.require(:resource).permit(*LIST)
  end
end
ResourceController::LIST
#=> [:foo, :bar, :baz]

但是我在这里看到了一点,因为你可以打开控制器的代码并检查它。