我实际上是在尝试将此语句转换为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")
但是这并没有考虑通过确定我的查询范围只是未完成的测验
我该怎么做?
答案 0 :(得分:1)
这有用吗?
Member.joins(:quizzes).where('quizzes.completed = ?', false)
这将返回至少有一个未完成的测验的成员。请注意,这假定不允许空值作为已完成的值。如果允许空值,则必须说
Member.joins(:quizzes).where('quizzes.completed is null or quizzes.completed = ?', false)
我不确定这是不是你所追求的。如果您用英语而不是代码来描述所需的结果会很有帮助。