2014-11-25 52 views
0

我:如何找到條件記錄加入協會

RevieweeCycle belongs_to的ReviewCycleReviewCycle的has_many Reviews(通過其他模式),Review有一種狀態:創建保存RevieweeCycle完成當他的所有評論ReviewCycle有其中一個狀態 - 完成批准。我想找到最後完成RevieweeCycle

如何找到一個查詢? 謝謝。

回答

0

試試這個:

ReviewCycle.where(review_id: Review.where("status is ?", ["completed", "approved"])).revieweecycles.order("updated_at DESC") 
+0

較短版本的用戶問一個查詢。你的代碼觸發兩個查詢。 – 2014-11-25 10:41:54

+0

@SimoneCarletti不用用戶想要上次完成revieweecycles,所以我們需要通過評論得到revieweecycles通過審查週期 – Choco 2014-11-25 10:44:18

0

使用SQL JOIN語法。

ReviewCycle.joins(:reviews).where(reviews: { status: %w(completed approved) }).order(updated_at: :desc).first 

這是

ReviewCycle.joins(:reviews).where(reviews: { status: ["completed", "approved"] }).order(updated_at: :desc).first 

ReviewCycle.joins(:reviews).where("reviews.status IN (?)", ["completed", "approved"]).order(updated_at: :desc).first 
+0

如果我將使用您的版本,那麼一些結果不適合我,例如ReviewCycle有一個審查狀態'已完成'和'未完成'。但我希望ReviewCycles能夠完成所有評論 – piton4eg 2014-11-25 10:49:33