有没有办法使用:join或:includes来查询项目,还可以在同一查询中返回没有对应关系的结果?
当前的示例查询
Company.find(1).users.includes(:billing_statuses).where('billing_statuses.expires < ?', Time.now)
这应该返回所有已过期billing_statuses的用户,但最终目标是让所有“未开帐单”的用户,包括尚未拥有的用户:billing_statuses关系。
有没有办法在一个查询中合并?
我已经探索过的一个替代方案是让公司的所有用户,然后减去没有过期账单的用户。但我觉得这不是最理想的解决方案。
谢谢!
答案 0 :(得分:1)
试试这个:
User.where(company_id: 1).joins("LEFT OUTER JOIN billing_statuses ON billing_statuses.user_id = users.id").where("billing_statuses.expires < ? or billing_statuses.id IS NULL", Time.now)