Rails - 允许未知类型的参数(字符串,哈希,数组或fixnum)

时间:2015-12-22 21:53:08

标签: ruby-on-rails ruby

我的模型有一个custom_fields列,用于序列化一系列哈希值。这些散列中的每一个都具有value属性,该属性可以是散列,数组,字符串或fixnum。无论其类型如何,我该怎么做才能允许此value属性?

我目前允许的params行看起来像:

params.require(:model_name).permit([
    :field_one,
    :field_two,
    custom_fields: [:value]
])

value是未知类型时,我有什么办法可以修改它来接受吗?

1 个答案:

答案 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,当我需要了解细节时,我仍然会参考它。