2014-06-24 5 views
1

C'est probablement un titre terrible, mais voilà.Chargement des données associées dans une seule requête

J'ai deux modèles, article et catégorie. C'est une relation plusieurs-à-plusieurs (les éléments peuvent appartenir à plusieurs catégories, les catégories peuvent contenir plusieurs éléments).

Quelle est la meilleure façon de rechercher (par exemple par 'nom') la liste des catégories et de trouver tous les éléments qui y sont inclus? Si j'utilisais SQL, je ferais quelque chose comme ce qui suit:

SELECT * FROM items 
WHERE category_id in (
    SELECT id FROM category 
    WHERE name IN ('cat1', 'cat2', 'cat3') 
) 

ou quelque chose, mais je voudrais le faire d'une manière Railsy si possible.

Merci!

Répondre

0

EDIT

Item.includes(:categories).where("categories.name IN(?)", list_of_names)

+0

Pas bon - Je commence avec une liste des "noms", et non pas les ID. Les identifiants ont besoin de chercher en premier - assez facile si nous utilisons deux requêtes distinctes, mais j'espère pouvoir le faire avec un. – user1381745

+0

J'ai mis à jour la réponse – Rafal

+0

SQLite3 :: SQLException: pas une telle colonne: category.name: SELECT "articles". * FROM "éléments" WHERE (category.name IN ('musique')) - le résultat de ce code. Edit: changer comprend les jointures le fixe :) Merci à vous et user229688. – user1381745

Questions connexes