在单个查询中加载关联数据

时间:2014-06-24 16:15:56

标签: ruby-on-rails

这可能是一个可怕的头衔,但是这里有。

我有两个模型,项目和类别。这是一个多对多的关系(项目可以属于多个类别,类别可以包含多个项目。)

查找类别列表的最佳方式是什么(例如,通过名称')并查找其中包含的所有项目?如果我使用SQL,我会执行以下操作:

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

或者其他什么,但如果可能的话,我想以Railsy的方式做这件事。

谢谢!

2 个答案:

答案 0 :(得分:1)

你可以做到

Item.joins(:categories).where("categories.name" => ['cat1', 'cat2', 'cat3'])

答案 1 :(得分:0)

编辑

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