【问题标题】:Allow an array of hashes with a dynamic hash (hstore) inside允许内部包含动态散列 (hstore) 的散列数组
【发布时间】:2014-07-17 02:44:59
【问题描述】:

我被 strong_parameters 和这个内部带有动态哈希 (hstore) 的哈希数组所困扰。

结构如下:

{ contact_sources: [
  { id: 1, filled_fields: { randomstuff: 'randomdata', dunno: 123 } },
  { id: 2, filled_fields: { blah: 'blabla', dunno: 9043 } }
] }

所以,我的主要尝试如下:

params.permit(contact_sources: [{:filled_fields => []}, 'id'])

不返回填充字段。对如何处理有什么建议吗?

更新 1: 我有以下型号:

class ContactSource < ActiveRecord::Base
  # Fields: id:integer, filled_fields:hstore
end

在我的操作中,我一次提交多条记录(大规模更新),所以我有一个contact_source数组,但实际上它们不属于任何东西,这只是一次大规模更新.

【问题讨论】:

  • 我不太明白这是如何设置的...但也许您可以使用 attr_accessor 来引用 contact_sources 哈希,然后允许 attr_accessor?
  • @user3334690:不,我没有任何关联,请参阅我的更新 1 它应该更好地解释我在做什么
  • 表单是什么样的?
  • 没有表单 @user3334690 ,我执行 ajax 请求并传递该数组
  • 哦,我想我明白你现在在做什么了......我认为你正在寻找的是合并(也许是 deep_merge 给定你的哈希)而不是许可......我不是不过,对强参数很熟悉,所以我不确定如何使用它们

标签: ruby-on-rails ruby-on-rails-4 strong-parameters hstore ruby-on-rails-4.1


【解决方案1】:

看起来不可能用“普通”的 strong_parameters 语法来做到这一点。您唯一的选择实际上是,过滤后,使用循环重新添加这些值。我知道这很糟糕,但这是目前唯一的方法。我实际上向 Rails 提交了一个错误。

【讨论】:

    猜你喜欢
    • 2016-08-03
    • 2014-01-08
    • 2018-06-29
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    相关资源
    最近更新 更多