Обновление вложенных атрибутов append вместо обновления внутри имеет много отношений Я пытаюсь использовать Rails 4 Update_attributes
Class Person <ActiveRecord::Base
has_many :pets
accepts_nested_attributes_for :pets
end
Class Pet < ActiveRecord::Base
belongs_to :person
end
В моем контроллере я возвращаю параметры как {id: 23, house_no: '22A', pets: [{name: 'jeffy', type: 'dog'}, {name: 'sharky', type: 'fish'}]}
и мой метод обновления
def update
@Person = Person.find(params[:id])
if @Person.update(person_params)
@Person.save
render 'persons/create', status 200
else
render 'persons/create', status 400
end
end
private
def person_params
person_params = params.permit(:house_no)
person_params.merge! ({pets_attributes: params[:pets]}) if params[:pets].present?
person_params
end
Теперь, когда я его обновляю и если у человека уже есть домашнее животное затем новые домашние животные добавляются вместо того, чтобы обновляться например, если лицо с идентификатором 1 имеет 1 домашнее животное с именем "Тигр", и я обновляю этого человека с двумя домашними животными по имени "Шаша" и "Монти", тогда в записи человека есть 3 домашних животных (Тигр, Шаша и Монти) вместо того, чтобы обновлять его до 2 (Шаша и Монти).