Bot*_*Bot 2 activerecord ruby-on-rails ruby-on-rails-3.2
我有两种模型发票和发货。发票有_许多批货物,并且货物属于_到发票。
这就是我想要做的。
创建新货件。
new_shipment = Shipment.create! (params)
Run Code Online (Sandbox Code Playgroud)
检查此货件的合同是否已存在发票。
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
Run Code Online (Sandbox Code Playgroud)
我想知道添加发货后是否需要保存发票?此外,如何不先取货而直接添加货件?
我在发票中使用 :before_save 和 :after_save 来做一些处理。在控制台中,我尝试了这样的操作。
Invoice.last.shipments << (Shipment.first)
Invoice.last.shipments.count
Run Code Online (Sandbox Code Playgroud)
并且计数增加了。但我不确定 :before_save 和 :after_save 是否会运行,如果我明确不保存发票。
在这里,我从 excel 文件导入大数据,所以我想确保我不会两次保存发票。
执行以下代码行时,将保存发票和装运之间的关联:
invoice.shipments << new_shipment
Run Code Online (Sandbox Code Playgroud)
但是,在您执行以下操作之前,不会触发 before_save 和 after_save 回调:
invoice.save
Run Code Online (Sandbox Code Playgroud)
我认为您必须先取货,然后再分配。我认为没有办法解决这个问题。
| 归档时间: |
|
| 查看次数: |
1259 次 |
| 最近记录: |