我有兩個模型發票和裝運。發票has_many貨件並且貨件屬於發票。如何添加一個孩子到has_many關聯並在rails中運行回調
這是我想要做的。
創建新的貨件。
new_shipment = Shipment.create! (params)
檢查此貨件合同是否已存在發票。
invoice = Invoice.find_by_ref_no(ref_no)
if invoice.nil?
invoice.shipments << new_shipment
invoice.save
else
Invoice.create! (some_params,
:shipment_ids => [new_shipment.id],
other_params
)
end
我想知道是否需要在添加裝運後保存發票? 進一步如何直接添加貨件而不先取貨?
我使用:before_save和after_save在發票中做一些處理。在控制檯我嘗試了這樣的事情。
Invoice.last.shipments << (Shipment.first)
Invoice.last.shipments.count
而且數量增加了。但我不確定:before_save和after_save是否會運行,如果我明確不保存發票。
在這裏,我從Excel文件導入大數據,所以我想確保我不保存發票兩次。
'invoice.shipments.create!(PARAMS_FOR_SHIPMENT)'...可能你想要這個...謝謝 –
我沒有該發票的所有現有貨件。這是剛剛創建的新貨物,需要將其添加到現有發票(不創建新發票)。 – Bot
不,你不需要所有的貨物來創建貨件 –