【问题标题】:Rails Strong params when attribute can be string or hash当属性可以是字符串或哈希时,Rails 强参数
【发布时间】:2014-12-08 21:09:30
【问题描述】:

我有一个可以是字符串或哈希(元数据)的参数,我希望两者都使用 rails strong params

问题在于元数据可以是散列或字符串或两者兼有

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

使用 rails 参数

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

我有以下错误

expected Hash (got String) for param `metadata'

【问题讨论】:

  • :metadata 也许?
  • 抱歉打错了...现在编辑。
  • 将哈希转换为 json 数据。

标签: ruby-on-rails strong-parameters


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-06-19
    • 2013-01-07
    • 2019-05-30
    • 2017-09-12
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 2021-11-19
    相关资源
    最近更新 更多