如何使用strong_parameters允许其中一个参数是任意哈希?

时间:2013-07-16 07:57:37

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

我有一个模型,其中一个字段为serialise :config, JSON

它应该允许任何哈希值作为值。但我无法通过strong_parameters找到一种干净的方法。

我目前的解决方案是:

def resource_params
  p = params.require(:model)
  config = dp.slice(:config).permit!
  p.delete(:config)
  [p.permit(:foo, :bar, ...).merge(config)]
end

2 个答案:

答案 0 :(得分:0)

来自strong_params gem page

  

将整个参数哈希列入白名单,许可证!方法可以使用

     

params.require(:log_entry)!.permit

  

如果您想确保params中存在多个键   hash,你可以调用两次方法:

     

params.require(:令牌)
  params.require(:柱).permit(:标题)

但我不是这方面的专家。

答案 1 :(得分:0)

您必须使用白名单:

def resource_params
  params.require(:model).permit(:foo, :bar, ...).tap do |whitelisted|
    whitelisted[:config] = params[:model][:config]
  end
end

你可以在这里找到它:http://guides.rubyonrails.org/action_controller_overview.html#strong-parameters搜索“4.5.4超出强参数范围”