Разрешить массив хэшей с динамическим хешем (hstore) внутри

Я застрял с 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'])

Который не возвращает fill_fields. Любое предложение о том, как с этим бороться?

Обновление 1: у меня есть следующая модель:

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

В своем действии я отправляю несколько записей одновременно (массовое обновление), поэтому у меня есть массив contact_source, но на самом деле они ничему не принадлежат, это просто массовое обновление.


person Francesco Belladonna    schedule 17.07.2014    source источник
comment
Я не совсем понимаю, как это устроено... но, возможно, вы могли бы использовать attr_accessor для ссылки на хэш contact_sources, а затем разрешить attr_accessor?   -  person user3334690    schedule 17.07.2014
comment
@ user3334690: Нет, у меня нет никакой ассоциации, посмотрите мое обновление 1, оно должно лучше объяснить, что я делаю.   -  person Francesco Belladonna    schedule 17.07.2014
comment
как выглядит форма?   -  person user3334690    schedule 18.07.2014
comment
Нет формы @user3334690, я выполняю запрос ajax и передаю этот массив   -  person Francesco Belladonna    schedule 18.07.2014
comment
о, я думаю, я вижу, что вы сейчас делаете... Я думаю, что вы ищете слияние (и, возможно, deep_merge, учитывая ваш хэш) вместо разрешения... Хотя я еще не знаком с сильными параметрами , поэтому я не совсем уверен, как их использовать   -  person user3334690    schedule 18.07.2014


Ответы (1)


Похоже, это невозможно сделать с «простым» синтаксисом strong_parameters. Единственный вариант, который у вас есть, — это после фильтрации повторно добавить эти значения с помощью цикла. Я знаю, это ужасно, но сейчас это единственный выход. На самом деле я отправил ошибку в Rails.

person Francesco Belladonna    schedule 19.07.2014