2012-05-28 45 views
1

有沒有一種方法可以使用a:joins或:includes查詢項目,還可以在同一個查詢中返回沒有對應關係的結果?ActiveRecord Rail 3查詢包含沒有現有關係的結果

當前例子查詢

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

應該返回已過期billing_statuses所有用戶,但是,最終的目標是讓所有「未結算」的用戶,這將包括那些尚未用戶有:billing_statuses關係。

有沒有辦法在一個查詢中結合這個?

我已經探索過的另一種方法是獲取一家公司的所有用戶,然後減去沒有過期賬單的用戶。但我覺得這不是最理想的解決方案。

謝謝!

回答

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)

+0

似乎工作:) –