我的模型有一个custom_fields
列,用于序列化一系列哈希值。这些散列中的每一个都具有value
属性,该属性可以是散列,数组,字符串或fixnum。无论其类型如何,我该怎么做才能允许此value
属性?
我目前允许的params行看起来像:
params.require(:model_name).permit([
:field_one,
:field_two,
custom_fields: [:value]
])
当value
是未知类型时,我有什么办法可以修改它来接受吗?
答案 0 :(得分:1)
你想要的可能是什么,但需要一些工作。你最好的选择是这篇文章:http://blog.trackets.com/2013/08/17/strong-parameters-by-example.html
这不是我的工作,但我使用了他们在我写的应用程序中概述的技术。你要找的部分是在最后:
params = ActionController::Parameters.new(user: { username: "john", data: { foo: "bar" } })
# let's assume we can't do this because the data hash can contain any kind of data
params.require(:user).permit(:username, data: [ :foo ])
# we need to use the power of ruby to do this "by hand"
params.require(:user).permit(:username).tap do |whitelisted|
whitelisted[:data] = params[:user][:data]
end
# Unpermitted parameters: data
# => { "username" => "john", "data" => {"foo"=>"bar"} }
那篇博文有助于我了解params,当我需要了解细节时,我仍然会参考它。