我很难查询一个有很多关联的。上下文是存储。
class Store < ActiveRecord::Base
has_many :items
end
class Item < ActiveRecord::Base
belongs_to: store
end
存储表:
id name
1 Macys
2 Target
3 Dillards
项目表:
id store_id name
1 1 pants
2 1 shirt
3 2 pants
4 2 shirt
5 3 shirt
我想查询只卖衬衫的商店。所以我需要一个返回 store
记录 id
的 3
.
当我试着
Store.includes(:items).where(
items: { name: %w(shirts)} ).references(:items)
它回来了 store_ids
1、2和3(所有商店),因为他们都有衬衫。
4条答案
按热度按时间gzjq41n41#
在你的
Item
模特,你需要设置counter_cache
:那么您的查询将是:
wd2eg0qa2#
最后我用了:
mbzjlibv3#
希望有更好的方法((如果有人)
px9o7tmv4#
正如帖子中所提到的,只有衬衫这样的商品才会出现:
希望有帮助!!