Сериализовать массив с помощью сильных_параметров

Я пытаюсь сохранить массив, используя драгоценный камень strong_parameters. Но у меня возникают проблемы с тем, как форма отправляет мой массив. Параметры выглядят следующим образом:

> params[:circuit] 
=> {"title"=>"Some title", ..., "viewable_tasks"=>{"0"=>"woop", "1"=>"dee", ...}}

И моя функция circuit_params выглядит так:

def circuit_params
  params.require(:circuit).permit(:title, :id, viewable_tasks: { }, ... )
end

Я не могу заставить синтаксис разрешить мои параметры работать. Что я получаю в консоли:

> circuit_params
=> {"title"=>"implement plug-and-play mindshare",
 "viewable_tasks"=>{"0"=>nil, "1"=>nil, "2"=>nil}, ...

В моей модели у меня есть:

class Circuit < ActiveRecord::Base
   serialize :viewable_tasks, Array
   ...
end

Я заметил, что я могу заставить его работать правильно с атрибутами, которые я называю accepts_nested_attributes_for on, поэтому это может иметь какое-то отношение к нему.

Спасибо за любую помощь

Ответ 1

У меня была такая же проблема, и это был правильный синтаксис:

def circuit_params
  params.require(:circuit).permit(:title, :id, {:viewable_tasks => []}, ... )
end

Ответ 2

сериализованные элементы должны быть в конце параметров разрешения. По моему опыту (и я точно не знаю почему), вы не можете вводить другой несертифицированный элемент после сериализации... попробуйте и сообщите нам.

Ответ 3

Попробуйте использовать это:

def circuit_params
  params.require(:circuit).permit(:title, :id, viewable_tasks:[], ... )
end