Rails + SQL: 不加入时包含加入 table
Rails + SQL: include join table when no join
我有一个模型 Service,它可以选择属于一个区域。我正在尝试编写一个关于服务的查询,使我能够按区域标题和服务标题查询服务。
我已经通过以下查询成功完成了:
Service.includes(:region).joins(:region).order(Region.arel_table[:title])
但是它不包括不属于某个区域的服务。我希望查询还包括那些不属于某个区域的查询。在接下来的查询中,我更接近了:
Service.where("region_id is null") + Service.includes(:region).joins(:region).order(Region.arel_table[:title])
但是……
- 这感觉笨拙又可怕
- 我需要它 return
ActiveRecord::Array
- 奖金:在阿雷尔。
如何实现包含具有关联和不具有关联的记录的查询。
谢谢
我没试过,但你可以在连接中指定连接 sql。所以也许是这样的:
Service.includes(:region).joins("LEFT JOIN regions on services.region_id = regions.id").order(Region.arel_table[:title])
我有一个模型 Service,它可以选择属于一个区域。我正在尝试编写一个关于服务的查询,使我能够按区域标题和服务标题查询服务。
我已经通过以下查询成功完成了:
Service.includes(:region).joins(:region).order(Region.arel_table[:title])
但是它不包括不属于某个区域的服务。我希望查询还包括那些不属于某个区域的查询。在接下来的查询中,我更接近了:
Service.where("region_id is null") + Service.includes(:region).joins(:region).order(Region.arel_table[:title])
但是……
- 这感觉笨拙又可怕
- 我需要它 return ActiveRecord::Array
- 奖金:在阿雷尔。
如何实现包含具有关联和不具有关联的记录的查询。
谢谢
我没试过,但你可以在连接中指定连接 sql。所以也许是这样的:
Service.includes(:region).joins("LEFT JOIN regions on services.region_id = regions.id").order(Region.arel_table[:title])