运维开发网

ruby-on-rails – Rails,scope,OR和join

运维开发网 https://www.qedev.com 2020-07-25 21:46 出处:网络 作者:运维开发网整理
我有一个范围: includes(:countries).where("profiles.sector = :sector OR advices.sector = :sector", :sector => sector) 它产生以下SQL: SELECT `profiles`.* FROM `profiles` INNER JOIN `advices` ON `advices`.`profile_
我有一个范围:

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

(是的,我的个人资料和我的国家模型中有国家/地区)

不幸的是,OR似乎失败了:

它不会使配置文件只有适当的扇区,但没有相关的建议.思考?

您正在进行INNER JOIN,因此需要配置文件具有相应的建议.请尝试以下方法:

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

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

0

精彩评论

暂无评论...
验证码 换一张
取 消