ruby-on-rails - Rails、范围、OR 和连接

标签 ruby-on-rails activerecord scope

我有一个范围:

includes(:countries).where("profiles.sector = :sector OR advices.sector = :sector", :sector => sector)

它生成以下 SQL:
SELECT `profiles`.* FROM `profiles` INNER JOIN `advices` ON `advices`.`profile_id` = `profiles`.`id` WHERE (profiles.sector = 'Forestry_paper' OR advices.sector = 'Forestry_paper')

(是的,我的 ProfileCountry 模型中有国家/地区)

不幸的是,OR似乎失败:

它不会呈现只有适当部门但没有相关建议的配置文件。想法?

最佳答案

您正在执行 INNER JOIN,因此它要求配置文件具有相应的建议。请尝试以下操作:

Profile
  .joins("LEFT JOIN advices ON advices.profile_id = profiles.id")
  .where("profiles.sector = :sector OR advices.sector = :sector", :sector => sector)

这还将包括没有建议的配置文件。

关于ruby-on-rails - Rails、范围、OR 和连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5047065/

相关文章:

ruby-on-rails - 将 Mechanize gem 与 Nokogirl gem 一起使用?

ruby-on-rails - 载波:将版本名称移到文件名的末尾,而不是前

mysql - Codeigniter Active Record/MySQL 查询 - group_by 导致仅返回一行

java - 分配给事件处理程序方法中的全局变量的值未在另一个方法中重现

Java并发- "cachable"范围是什么

javascript - 这是避免旧版本 Node 中的回调 hell 的可接受方法吗?

mysql - 通过 Rails 中的按钮调用 Controller 方法

ruby-on-rails - 设计没有 session cookie 的 token_authenticable

ruby-on-rails - 在救援中添加模型验证错误

ruby-on-rails - Rails "where"方法通过子属性查找父项