ActiveRecord Rail 3查询包括没有现有关系的结果

时间:2012-05-28 20:35:40

标签: ruby-on-rails-3 activerecord

有没有办法使用:join或:includes来查询项目,还可以在同一查询中返回没有对应关系的结果?

当前的示例查询

Company.find(1).users.includes(:billing_statuses).where('billing_statuses.expires < ?', Time.now)

这应该返回所有已过期billing_statuses的用户,但最终目标是让所有“未开帐单”的用户,包括尚未拥有的用户:billing_statuses关系。

有没有办法在一个查询中合并?

我已经探索过的一个替代方案是让公司的所有用户,然后减去没有过期账单的用户。但我觉得这不是最理想的解决方案。

谢谢!

1 个答案:

答案 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)