我有很多用户,每个用户都有很多项目。现在我有一个搜索表单,我想找到系统中与某个名称匹配的所有项目(在每个用户中)。类似问题的大多数答案都是这样的:
users = User.where("items.name" => 'name')
但它会给我用户,所以我需要迭代它们,然后每个用户进行查询:
items = []
users.each do |user|
items += user.items.where("name" => 'name')
end
但是当然循环中的查询看起来非常糟糕。有没有办法改善这个?我唯一能想到的是保留一些项目的缓存,我可以直接访问它们。任何人都有其他想法吗?