mysql - rails + SQL : include join table when no join

标签 mysql ruby-on-rails ruby-on-rails-4 arel

我有一个模型 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])

但是...

  1. 这感觉笨拙且可怕
  2. 我需要它来返回 ActiveRecord::数组
  3. 奖励:在阿雷尔。

如何实现包含具有关联和不具有关联的记录的查询。

谢谢

最佳答案

我没有尝试过这个,但是你可以在连接中指定连接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/

相关文章:

php - 如何在sql表的每一行后面添加一个按钮?

php - 图片发布和 mysql BLOB 变量出现问题

ruby-on-rails - Rails 3 - 在更新之前使用参数检查对象是否有效

ruby-on-rails - Rails 项目不断崩溃。最新错误: missing :controller key

http-post - 带有 link_to 的 rails 4 和带有强参数的方法 post

php - 一个SQL中的两个表,查询

PHP - MySQL - 每天备份数据库

ruby-on-rails - 使用子域在 rails 2.3.2 应用程序中丢失 session

ruby-on-rails - Rails 中最简单、最快的加密/解密方法?

ruby-on-rails - rails 4中secret_key_base有什么用