我有一个参数,可以是字符串或哈希(元数据),我想允许两个使用rails强参数
问题是元数据可以是散列或字符串,也可以是两者
{transactions: [{metadata: "hello"}, metadata: {name: "world"}]}
使用rails params
params.permit(:transactions => [:reference_id, :metadata => ["name"]])
我有以下错误
expected Hash (got String) for param `metadata'
答案 0 :(得分:0)
我看到允许的唯一方法是首先验证常量参数,然后验证变量类型的参数:
params.permit(:transactions => [:reference_id, :metadata])
begin
params.permit(:metadata => {})
rescue TypeError
# here check that :metadata is a string
end