0
私はmetasearchまたは代わりにスコープを作成しようとしていますが、そのhas_many-associationのいずれかがtype == "Something"に等しいオブジェクトはありません。metasearch has_many all/noneは一致する必要があります
例:今、私はどのように行うのか
:invoice_base_type_equals => "Invoice"
:
joins(:invoice_base).where(:invoice_base => {:type => "Invoice"})
またはメタサーチ:
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
請求書が簡単にカスタムスコープによって行われてきた注文を検索反対に、請求書のない注文を見つけますか? (OrderAcknowledgementsは常に許可する必要があります)
これは実際に私が今やっている方法です( "type = 'Invoice'"を追加しています)が、 "NOT IN (idsのリスト) "は何千というIDのリストになります。 – vimaz
請求書ベースに外部キーの値が格納されているため、請求書ベースに接続されていないすべてのオーダーを検索するには、すべてをチェックする必要があります。 Rubyで配列を比較するのと同じように考えてください。私はそれが一番美しいものではないことに同意します。しかし、データベースレベルのインデックス付きの列でそれを行うことは、ソフトウェア側で比較するよりはるかに高速です。特にそのテーブルが大きくなると。 – agmcleod
これはトリックですが、NOT INが本当に高価になるのを始めた数千のレコードがあるとすぐに。そこにはもっと良い解決策があるような気がする。 – DavidMann10k