如何对count和attribute执行where查询?

时间:2014-05-16 15:24:11

标签: sql ruby-on-rails postgresql activerecord

我实际上是在尝试将此语句转换为SQL:

Member.all.select{|e|e.quizzes.present? && e.quizzes.any?{|q|!q.completed} }

到目前为止,我有这个:

Member.joins(:quizzes).group("enterprise_members.id HAVING count(quizzes.id) > 0")

但是这并没有考虑通过确定我的查询范围只是未完成的测验

我该怎么做?

1 个答案:

答案 0 :(得分:1)

这有用吗?

Member.joins(:quizzes).where('quizzes.completed = ?', false)

这将返回至少有一个未完成的测验的成员。请注意,这假定不允许空值作为已完成的值。如果允许空值,则必须说

Member.joins(:quizzes).where('quizzes.completed is null or quizzes.completed = ?', false)

我不确定这是不是你所追求的。如果您用英语而不是代码来描述所需的结果会很有帮助。