当属性可以是字符串或哈希时,Rails强对数

时间:2014-12-08 21:09:30

标签: ruby-on-rails strong-parameters

我有一个参数,可以是字符串或哈希(元数据),我想允许两个使用rails强参数

问题是元数据可以是散列或字符串,也可以是两者

{transactions: [{metadata: "hello"}, metadata: {name: "world"}]}

使用rails params

params.permit(:transactions => [:reference_id, :metadata => ["name"]])

我有以下错误

expected Hash (got String) for param `metadata'

1 个答案:

答案 0 :(得分:0)

我看到允许的唯一方法是首先验证常量参数,然后验证变量类型的参数:

params.permit(:transactions => [:reference_id, :metadata])

begin
   params.permit(:metadata => {})
rescue TypeError
   # here check that :metadata is a string
end