模型关联
更新时间:
多对多关联
一个订单需要组合支付,由多笔支付完成。一笔支付也可以同时支付多笔订单。订单和支付是多对多的关系,模型如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Order < ActiveRecord::Base
has_many :order_payments
has_nany :payments, through: :order_payments
end
class OrderPayment < ActiveRecord::Base
belongs_to :order
belongs_to :payment
end
class Payment < ActiveRecord::Base
has_many :order_payments
has_many :orders, through: :order_payments
end
现在我们基于已有的订单,创建一笔支付:
1
2
order = Order.take
payment = order.payments.build
当我们调用payment.save
将支付记录存入数据库的时候,他们的关联是否已建立了呢?
1
order.payments 返回为空
在这种情况下,我们需要使用 inverse_of 将生成的对象双向绑定。
1
2
3
4
class OrderPayment < ActiveRecord::Base
belongs_to :order
belongs_to :payment, inverse_of: :order_payments
end