如何使用ActiveRecord建模这些关系?

时间:2014-07-17 09:14:31

标签: ruby-on-rails database activerecord paypal relationship

我有订单模型,卖家模型和报价模型。订单有很多报价,卖家有很多报价,报价属于订单和卖家。

现在我想添加一个付款模式,它会捕获报价的付款。我有两个选择:

  1. 付款具有quote_id且属于报价。令我感到困扰的是,我不确定如何使用ActiveRecord定义卖家和付款之间的关系。我想使用@seller.payments之类的内容列出卖家收到的所有付款。 @seller.quotes.joins(:payments)可能有用,但很难看。

  2. 付款有sell_id和order_id,因此卖家有很多付款。付款可以使用复合键[seller_id,order_id](使用复合主键宝石)属于报价

  3. 事情是可能有其他模型属于报价,但与卖方的关系更重要(例如评级)。这似乎是一种非常常见的情况。我想知道哪个选项更好,还有其他更优雅的解决方案。

1 个答案:

答案 0 :(得分:0)

如果您使用第一个选项,则可以使用

class Seller < ActiveRecord::Base
  has_many :quotes
  has_many :payments, through: :quotes
end

这将允许您执行@seller.payments