Rails。使用AND / OR

时间:2013-04-29 13:15:17

标签: sql ruby-on-rails-3 postgresql activerecord

我的模型Tasks包含字段completed:booleancompleted_date:datetime

如果任务完成,它将具有标记为已完成的日期,否则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 个答案:

答案 0 :(得分:1)

你可以写像

这样的东西
current_user.account.tasks.where("completed_date is NULL OR completed_date > ?", 2.days.ago)

并且不应该有任何错误(除非您的关联有问题)

您不应该需要completed_datecompleted。您可以仅使用completed_date进行两项检查(completed_date而非null表示completedtrue