Rails中具有散列的未允许参数

ucc*_*ack 4 ruby parameters hash ruby-on-rails

我的Rails模型中有一个哈希字段,我正在尝试更新它.该属性detail首先通过作为text类型的迁移生成.后来,在我的模型中,它被设置为hash通过store :detail属性

class Request < ActiveRecord::Base
    store :detail
end
Run Code Online (Sandbox Code Playgroud)

我的strong_params是这样的:

params.require(:request).permit(:name, :action, :detail => {})
Run Code Online (Sandbox Code Playgroud)

但是,当我的参数通过时

Parameters: {"request"=>{"name"=>"temp", "action"=>"create", "detail"=>{"test"=>"fdsf"}}}
Run Code Online (Sandbox Code Playgroud)

我被告知有一个Unpermitted parameter: test,尽管test参数是detail哈希的一部分.

我该如何解决?谢谢!

Ale*_*kin 6

params.require(:request).permit(:name, :action, detail: [:test])
Run Code Online (Sandbox Code Playgroud)

另一个选项(例如,如果您事先不知道可能的字段名称)将detail在客户端序列化为json字符串,接受它作为字符串并随后反序列化为哈希.