将哈希值保存到参数中?

时间:2014-06-26 19:56:22

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

我想将提交的表单中的参数保存到名为hash_options的哈希值中,该哈希值对应于表格中的字段。

  1. 如何将hash_options的哈希值存储为:hash_fields的值?
    • hash_fields是一个文本字段,我试图将hash_options作为普通哈希存储在此行中。
  2.  
    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
    

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

1 个答案:

答案 0 :(得分:0)

为了能够将哈希保存到数据库,您有几个选择:

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

    field options_hash, type: Hash

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

  3. 至于params部分,无需将其包含在许可证调用中,您可以这样做:

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