我从Rails 4开始。在控制器中遇到与许可参数相关的新安全功能强参数。
http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html
这很好,但我们需要列出模型中的所有字段。是否有一种简单的方法可以在下面列出字段。
感谢。
答案 0 :(得分:1)
如果您在模型中说了大约20列,并且您不需要在控制器中指定允许内的所有列,那么您可以执行一个快捷方式,然后将其作为:
params.require(:person).permit!
这将允许模型中的所有属性
答案 1 :(得分:0)
这是一个快速的“入门”提示,关于你的模型Foo有很多字段的情况......而不是将它们全部列入白名单,自动生成一个列表,然后删除那些你知道不应该大规模的列表 - 分配
在rails控制台中,您可以非常轻松地获取所有字段的符号列表,将其复制/粘贴到permit(...)方法,然后删除那些不应该按质量分配的字符:id,:ctreated_at, :admin等
Foo.attribute_names.map(&:to_sym).sort
> [:address, :admin, :created_at, :id, :name, :updated_at]
这比使用.permit只需要几秒钟!方法,但从安全的角度为您提供更好的起点。
答案 2 :(得分:-1)
它提供了一个保护最终用户属性的界面 分配。这使得Action Controller参数被禁止 用于活动模型批量分配,直到它们被列入白名单。
基本上,这意味着只有某些参数值将通过您的控制器发送到模型(从而允许您更好地控制Rails处理哪些数据)
<强> DRY 强>
如果你想为多个控制器使用强参数,或者只是想干扰这个过程,我们就用这个:
#app/controllers/application_controller.rb
private
#Strong Params
def permitted_params
@resource = self.resource_class
@model = "#{@resource}".downcase.to_sym
attributes = @resource.attribute_names + %w(custom items here)
params.permit(@model => attributes)
end