【问题标题】:Save a hash to a parameter?将哈希保存到参数?
【发布时间】:2014-08-17 19:32:46
【问题描述】:

我想将提交的表单中的参数保存到一个名为:hash_options 的哈希中,它对应于我表中的一个字段。

  1. 如何将hash_options 的哈希值存储为hash_fields 的值?
    • hash_fields 是一个文本字段,我试图将 hash_options 作为普通哈希存储在这一行中。

def person_params
  hash_options = {age: params['person']['age'], location: params['person']['location'], gender: params['person']['gender']}
  params.require(:person).permit(:first_name, :last_name, :owner, hash_fields: [hash_options])
end

附带问题: 模型如何访问和存储参数?

【问题讨论】:

    标签: ruby-on-rails activerecord hash strong-parameters


    【解决方案1】:

    为了能够将哈希按原样保存到数据库中,您有几个选项:

    1. 如果您使用的是 MongoDB(mongoid),您可以将其定义为模型中的哈希类型字段:

      field options_hash, type: Hash

    2. 您可以使用 postgresql HStore 将无模式数据保存到该列中,这样您就可以将散列保存到列中并将其作为散列使用。

    至于 params 部分,不需要在 permit 调用中包含它,您可以这样做:

    model = Model.new(person_params) do |m|
      m.options_hash = hash_options
    end
    
    model.save
    

    【讨论】:

    • 我正在使用 postgres。我将与此到期并回复您。谢谢。
    猜你喜欢
    • 2012-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    相关资源
    最近更新 更多