【发布时间】:2015-06-18 14:29:46
【问题描述】:
我有一个模特Shop:
class Shop < ActiveRecord::Base
has_and_belongs_to_many :services
end
还有一个模特Service:
class Service < ActiveRecord::Base
has_and_belongs_to_many :shops
end
我想查询每家提供所有以下服务的商店:
- 赔偿
- 建议
- 运费
所以返回所有服务包含reparation AND advise AND shipping的商店。
这是否可以仅通过 ActiveRecord 查询实现?
谢谢!
【问题讨论】:
-
这需要硬编码的 SQL 查询,而不仅仅是 ActiveRecord。因为
Shop.includes(:services).where(services: { name: ['reparation', 'advise', 'shipping'] })将返回至少具有 3 项服务中的一项的商店(OR 条件,而不是您所要求的 AND)。
标签: sql ruby-on-rails activerecord associations