0
assign_attributes似乎無法識別何時刪除嵌套對象。具有嵌套窗體的assign_attributes行爲
我有一個名爲訂貨型號:
class Order < ActiveRecord::Base
has_many :deliveries, :dependent => :destroy
accepts_nested_attributes_for :deliveries, :allow_destroy => true
end
說我創建了有兩個交貨的訂單。然後我打開'編輯訂單'窗體(這是一個嵌套窗體,您可以看到兩個嵌套交付),然後刪除其中一個交付,即'_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?理想情況下,我希望它刪除已刪除的傳遞,但不保存生成的對象/鏈接到數據庫。