2013-04-29 66 views
0

我有一個模型Tasks,它有字段completed:booleancompleted_date:datetimeRails .where使用AND/OR

如果一個任務完成,它會有它被標記爲完成的日期,否則completed_date將是錯誤的。

我想寫尋找其中completed = falsecompleted_date less than 2 days ago OR完成= true的任務and completed_date = nil`

像這樣的事情並不在我的控制器工作current_user.account.tasks.where("(completed = ? AND completed_date = ?) OR (completed = ? AND completed_date > ?)", false, nil, true, Time.now - 2.days)的查詢。

+1

這是什麼問題?你有編譯器錯誤嗎?運行時錯誤?不正確的結果?什麼類型的任務? – 2013-04-29 13:19:10

+0

剛剛返回了錯誤的結果。問題已經回答,謝謝! – bcackerman 2013-04-29 17:19:49

回答

1

你可以寫同樣的事情,就像

current_user.account.tasks.where("completed_date is NULL OR completed_date > ?", 2.days.ago) 

,不應該有任何錯誤(除非有出錯了協會)

你不應該需要completed_datecompleted。你可以只使用completed_date兩個檢查(completed_datenull意味着completedtrue