查找数据库中没有关联记录的所有记录

时间:2019-01-24 12:38:23

标签: mysql ruby-on-rails ruby activerecord

我有两个模型

class Checkout
 has_one :order
end

class Order 
  belongs_to :checkout
end

我需要找到所有尚未下订单的结帐。我该如何使用滑轨?

2 个答案:

答案 0 :(得分:2)

使用left outer join,它会给您所有与订单结合的结帐。然后选择无顺序的行(Chceckout.left_outer_join(:orders).where('orders.id' => nil)

JOIN

答案 1 :(得分:0)

这里的技巧是include()需要关联的名称,而where需要表的名称。对于has_one而言,关联通常以单数形式表示,因此会发生变化,但是where()部分保持原样。因此声明如下:

  Checkout.includes(:order).where( :orders=> { :orders_id=> nil } )