2013-04-29 59 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