2014-06-24 14 views
1

這可能是一個可怕的標題,但是這裏有。在單個查詢中加載相關數據

我有兩個模型,Item和Category。這是一個多對多的關係(項目可以屬於多個類別,類別可以包含多個項目)。

什麼是查找(例如通過'name')類別列表並查找其中包含的所有項目的最佳方式?如果我使用SQL,我會做類似如下:

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

或東西,但我希望做一個Railsy的方式,如果可能的。

謝謝!

回答

0

編輯

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

+0

沒有什麼好 - 我開始以 「名」,而不是ID的列表。這些ID需要首先查找 - 如果我們使用兩個單獨的查詢,則很容易,但我希望能夠用一個查詢來完成。 – user1381745

+0

我更新了答案 – Rafal

+0

SQLite3 :: SQLException:no such column:category.name:SELECT「items」。* FROM「items」WHERE(category.name IN('music')) - 該代碼的結果。編輯:改變包括加入固定:)謝謝你和user229688。 – user1381745