Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用具有多个条件的联接查询_Ruby On Rails_Postgresql_Ruby On Rails 4 - Fatal编程技术网

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})