2

我有一个模型,其中一个字段是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
4

2 回答 2

0

来自strong_params gem 页面

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

params.require(:log_entry).permit!

并且

如果要确保 params 哈希中存在多个键,可以调用该方法两次:

params.require(:token)
params.require(:post).permit(:title)

但我不是这方面的专家。

于 2013-07-16T09:42:02.007 回答
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 强参数范围之外”

于 2013-10-13T14:14:55.987 回答