assign_attributes, похоже, не распознает, когда я удаляю вложенные объекты.Поведение assign_attributes с вложенными формами
У меня есть модель под названием Order:
class Order < ActiveRecord::Base
has_many :deliveries, :dependent => :destroy
accepts_nested_attributes_for :deliveries, :allow_destroy => true
end
Say создать заказ с двумя поставками. Затем я открываю форму «порядок редактирования» (которая представляет собой вложенную форму, где вы можете видеть две вложенные поставки), а затем удаляйте одну из поставок, то есть для атрибута «_destroy» установлено значение true.
Тогда, если я:
@order = Order.find_by_id(params[:id])
@order.assign_attributes(order_params)
logger.debug "@order.deliveries: #{@order.deliveries.inspect}"
Я могу видеть, что оба поставок все еще там вложены под заказ.
Однако, если я
@order = Order.find_by_id(params[:id])
@order.update_attributes!(order_params)
logger.debug "@order.deliveries: #{@order.deliveries.inspect}"
Один из поставок удаляется, как и ожидалось.
Является ли это ожидаемым поведением assign_attributes? В идеале я хотел бы удалить удаленную доставку, но не сохранять полученные объекты/ссылки в базе данных.