0

我试图进行元搜索,或者一个范围,它给我所有没有任何has_many-association等于type ==“Something”的对象。

例子:

class Order < ActiveRecord::Base
  has_many :billing_base
end

class InvoiceBase < ActiveRecord::Base
  belongs_to :order
end

class Invoice < InvoiceBase
end

class OrderAcknowledgement < InvoiceBase
end

通过自定义范围轻松搜索具有发票的订单:

joins(:invoice_base).where(:invoice_base => {:type => "Invoice"})

或元搜索:

:invoice_base_type_equals => "Invoice"

现在我该如何做相反的事情,找到没有发票的订单?(OrderAcknowledgements 应该总是被允许的)

4

1 回答 1

0

当试图在我的计算机上解决这个问题时,我最终编写了一个涉及子查询的 sql 语句。我想知道您是否可以将原始 SQL 填充到 where 方法中。

select * from orders where orders.id not in (SELECT invoice_bases.order_id from invoice_bases);

where("orders.id not in (SELECT invoice_bases.order_id from invoice_bases)")

我在我的网站上试了一下,它似乎奏效了。请注意,我使用的是 MySQL

于 2011-09-09T17:30:27.670 回答