Invoice と Shipment の 2 つのモデルがあります。請求書には_多くの出荷があり、出荷は請求書に属します.
これが私がやろうとしていることです。
新しい出荷を作成します。
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
出荷を追加した後、請求書を保存する必要があることを知りたいですか? さらに、最初に取得せずに出荷を直接追加するにはどうすればよいですか?
Invoice で :before_save と :after_save を使用して処理を行います。コンソールでは、このようなことを試しました。
Invoice.last.shipments << (Shipment.first)
Invoice.last.shipments.count
そしてカウントが増えました。しかし、請求書を明示的に保存しない場合、:before_save と :after_save が実行されるかどうかはわかりません。
ここでは、Excel ファイルから大きなデータをインポートしているので、請求書を 2 回保存しないようにしたいと考えています。