Ruby on rails 使用具有多个条件的联接查询
我有一个查询,它应该根据某些条件获取类别名称。每个类别都有许多子类别,每个子类别都有提供者。我只想显示具有子类别且提供者数量为正的类别。因此,我目前正在这样做: 控制器Ruby on rails 使用具有多个条件的联接查询,ruby-on-rails,postgresql,ruby-on-rails-4,Ruby On Rails,Postgresql,Ruby On Rails 4,我有一个查询,它应该根据某些条件获取类别名称。每个类别都有许多子类别,每个子类别都有提供者。我只想显示具有子类别且提供者数量为正的类别。因此,我目前正在这样做: 控制器 @categories = Category.with_providers 型号: Category.joins(subcategories: [:service_providers]).uniq 根据我的任务,我现在需要显示的只是服务提供商计数大于0的类别,并且至少有一个提供商具有发布:true属性 我这里遗留的问题是,类
@categories = Category.with_providers
型号:
Category.joins(subcategories: [:service_providers]).uniq
根据我的任务,我现在需要显示的只是服务提供商计数大于0的类别,并且至少有一个提供商具有发布:true属性
我这里遗留的问题是,类别与服务提供商无关
类别有子类别
子类别具有服务提供者
这个问题可以通过在Category-to-Provider关系上建立直通连接来快速解决,但由于我已经花了一些时间试图对我的初始问题编写正确的查询,我想知道它的答案。您不需要检查条件
服务提供商计数是否超过0
,因为联接
应用内部联接。您需要做的是:
Category.joins(subcategories: [:service_providers]).where(service_providers: {published: true})