查找没有关联的记录

时间:2011-12-23 23:58:59

标签: ruby-on-rails ruby activerecord associations

shipment has_one :invoice
invoice belongs_to :shipment

对于每次发货,都可以创建一张发票。我想找到所有没有发票的货物。最好没有直接的SQL,我想使用rails的find方法。

1 个答案:

答案 0 :(得分:3)

您是否考虑稍微改变您的架构?

class Shipment
  belongs_to :invoice
end

class Invoice
  has_one :shipment
end

然后你就可以做到这一点:

Shipment.where(:invoice_id => nil)

说明:

has_onebelongs_to都表达了一对一的关系。如果它是belongs_to,则模型会将外键存储到关联中的另一条记录。因此,在这种情况下,表格shipments将包含invoice_id,您可以使用它。