2010-05-25 5 views
6

Existe-t-il un moyen d'utiliser EXISTS avec ActiveRecord en plus de find_by_sql?ActiveRecord O WH N'EXISTE PAS

Je voudrais trouver un moyen agréable de trouver tous les enregistrements sans association dans une relation un-à-plusieurs.

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

Répondre

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

ActiveRecord exécutera la même requête que ce que vous avez entré ci-dessus. Les instances Store retournées auront un seul attribut store_type.

+7

Ce serait bien s'il y avait un moyen d'écrire la requête interne en utilisant les méthodes standard ActiveRecord, plutôt que le SQL brut. Est-ce possible? –

+0

@AndrewCone avez-vous essayé d'utiliser 'join'? Voir document officiel http://guides.rubyonrails.org/active_record_querying.html#using-array-hash-of-named-associations – zhongxiao37

Questions connexes