理论: - 在customer bill
创建记录后,我发送两组数据两个不同的模型。一组数据发送到ledger
,一组数据发送到ledger_line_item
。复杂性在于发送数据后,我想ledger_id
存储在ledger_line_item
。代码如下复杂后保存在轨道上的红宝石关联
代码: -
class CustomerBill < ActiveRecord::Base
after_create :creating_ledger_line_items, :creating_ledger_items
def creating_ledger_items
CustomerLedger.create(:customer_id =>self.customer_id,/*rest of attributes*/)
end
def creating_ledger_line_items
CustomerLedgerLineItem.create(:customer_id =>self.customer_id,/*rest of attributes*/)
end
end
在总账我写
class CustomerLedger < ActiveRecord::Base
after_save :update_record_line_items
def update_record_line_items
a = CustomerLedgerLineItem.find_by_customer_id(self.customer_id)
a.update_attributes(:customer_ledger_id => self.id)
end
end
上面的代码工作正常,没有错误,但ledger_id
是尚未发布的ledger_line_items
。我无法确定这个错误发生的原因?有没有其他办法可以实现我的目标,即在账单创建后在ledger_line_items
中发布ledger_id
? 指导要求。提前感谢你。
我看到它的方式您正在手动创建给定属性列表的项目。你可以通过查看'accept_nested_attributes_for'来实现你想要的,这将简化你的代码。 – jvnill 2013-03-02 05:43:29