我有一个模型 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])
但是...
- 这感觉笨拙且可怕
- 我需要它来返回 ActiveRecord::数组
- 奖励:在阿雷尔。
如何实现包含具有关联和不具有关联的记录的查询。
谢谢
最佳答案
我没有尝试过这个,但是你可以在连接中指定连接sql。所以也许是这样的:
Service.includes(:region).joins("LEFT JOIN regions on services.region_id = regions.id").order(Region.arel_table[:title])
关于mysql - rails + SQL : include join table when no join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35729919/