0
메사 스캔을 만들려고 노력하고 있습니다. 또는 나에게 has_many-association이 type == "Something"과 같은 모든 객체를 제공하는 스코프를 사용하고 있습니다.metasearch has_many all/none이 일치해야합니다.
joins(:invoice_base).where(:invoice_base => {:type => "Invoice"})
또는 메타 검색 :
:invoice_base_type_equals => "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는 항상 허용되어야합니다.)
사실은 지금 당장 ("where type = 'Invoice'"를 추가하면됩니다), "NOT IN (목록의 ID) "는 수천 개의 ID 목록입니다. – vimaz
송장 기초에 외래 키 값이 저장되어 있고 송장 기초에 연결되지 않은 모든 주문을 찾으려면 모두 확인해야합니다. Ruby에서 배열을 비교하는 것과 같습니다. 나는 그것이 가장 예쁜 것은 아니라는 데 동의한다. 그러나 데이터베이스 수준의 색인 된 열에서이를 수행하는 것은 소프트웨어 측면에서 비교하는 것보다 훨씬 빠릅니다. 특히 그 테이블이 커지면. – agmcleod
이것은 트릭을 수행하지만, 몇 천 개의 레코드가 있으면 곧 비싼 레코드가 시작됩니다. 거기에 더 좋은 해결책이있는 것처럼 느껴집니다. – DavidMann10k