2010-05-25 10 views
6

Czy istnieje sposób używania EXISTS z ActiveRecord oprócz find_by_sql?ActiveRecord GDZIE NIE ISTNIEJĄ

Chciałbym mieć dobry sposób na znalezienie wszystkich rekordów bez związku w relacji Jeden do wielu.

SELECT DISTINCT store_type FROM stores 
    WHERE NOT EXISTS (SELECT * FROM cities_stores 
        WHERE cities_stores.store_type = stores.store_type) 

Odpowiedz

5
Store.all(:select => "DISTINCT store_type", 
      :conditions => "NOT EXISTS (SELECT * FROM cities_stores WHERE cities_stores.store_type = stores.store_type)") 

ActiveRecord będzie wykonywał tę samą kwerendę jako co wprowadzony powyżej. Zwrócone wystąpienia Store będą miały jeden atrybut store_type.

+7

Byłoby miło, gdyby był sposób napisania wewnętrznej kwerendy za pomocą standardowych metod ActiveRecord, a nie surowego SQL. Czy to jest możliwe? –

+0

@AndrewCone czy próbowałeś użyć 'join'? Zobacz oficjalny dokument http://guides.rubyonrails.org/active_record_querying.html#using-array-hash-of-named-associations – zhongxiao37

Powiązane problemy