2

Мне нелегко получить рельсы 4, работая с вложенными атрибутами и сериализовать. У меня есть:Как сделать рельсы strong_parameters + nested_attributes + сериализовать работу?

class Client < ActiveRecord::Base 
    belongs_to :event 
    serialize :phones 
end 


class Event < ActiveRecord::Base 
    has_one :client 
end 


class EventsController < ApplicationController 

    ... 

    def event_params 
    params.permit(client_attributes: [:phones]) 
    end 
end 

Когда я прохожу событие:

{client_attributes: { phones: 'string'}} 

это работает, но когда я пытаюсь

{client_attributes: { phones: [{phone_1_hash},{phone_2_hash}]}} 

Я получаю 'Самовольная параметры: телефоны' сообщение и поле не сохраняется ...

Я пытался использовать

class EventsController < ApplicationController 

    ... 

    def event_params 
    params.permit(client_attributes: [phones:[]]) 
    end 
end 

или

class Client < ActiveRecord::Base 
    belongs_to :event 
    serialize :phones, Array 
end 

, но до сих пор ничего не помогало. Мы ценим любые предложения. Благодаря!

ответ

6

Пффф - наконец, получил его ... С сильными параметрами нет неизвестных ключей не могут пройти, так что решение здесь было:

class EventsController < ApplicationController 

    ... 

    def event_params 
    params.permit(client_attributes: [ {phones: [:number, :type]}]) 
    end 
end 

на основе http://edgeapi.rubyonrails.org/classes/ActionController/Parameters.html#method-i-permit-21

Надеется, что это поможет кому-то.

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

Смежные вопросы