.where查询不输出不具有关联记录的记录

时间:2014-07-16 23:46:07

标签: ruby-on-rails ruby-on-rails-4

版本

  • Ruby on Rails 4.1.0
  • Ruby 2.1.2

模式

  • 问题有很多答案
  • 问题有一个用户
  • 答案有一个问题
  • 答案有一位用户
  • 用户有很多问题
  • 用户有很多答案

问题和答案有布尔字段flagged

目标

急切加载问题与答案(及其关联,用户)和用户,问题和答案的条件为flagged = false

使用查询

Question.includes(:user, answers: [:user]).where(flagged: false, answers: { flagged: false })

问题

查询仅返回仅与之关联的Answers的问题。没有答案关联的问题不会被退回。无论是否存在答案,预计所有未被标记的问题都将被退回。

1 个答案:

答案 0 :(得分:0)

嗯......在顽固地玩了一下代码之后,我找到了一个解决方案。

以下查询将返回与标记条件匹配的问题记录或不具有答案关联的问题记录

Question.includes(:user, answers: [:user]).where(flagged: [false, nil], answers: { flagged: [false, nil] })