2

基本上,我有点卡在这里。我正在使用 Rails 3.xx。我现在使用的代码如下

@email_reminder = ToDo.where(:reminder => true, :deadline_date =< Date.today)

上面的代码显然行不通。我四处搜索,但几乎每个解决方案都是 Rails 2.xx 解决方案。如果今天的日期已经过去或者是截止日期,找到我所有的“email_reminders”的最有效方法是什么?

(不必与上面使用的方法类似,但如果您提供使用类似方法的方法会有所帮助)

提前致谢

4

2 回答 2

9

我认为没有理由安装 gem 来解决这个问题。如果你使用一些好的'ol SQL :)

@email_reminder = ToDo.where(:reminder => true).where('deadline_date <= ?', Date.today)

注意小于或等于的顺序。

当然,如果您经常遇到此类问题,Squeel 可能值得研究。但是,我倾向于远离使用“hackery”这个词的图书馆

于 2014-12-11T02:58:06.673 回答
-3

要用 Rails做OR语句,我总是使用squeel

应该是这样的

@email_reminder = ToDo.where{ (:reminder => true) | (:deadline_date =< Date.today) }

编辑:

我从来没有见过用于分隔查询的两个部分的逗号(不确定这是否可能),我会这样做(2 个where子句由ANDin连接ActiveRecord

 @email_reminder = ToDo.where(:reminder => true).where({ deadline_date <= Date.today })

没有squeel它会像

.where("deadline_date <= ?", Date.today)

另外,请注意我翻转=<登录查询

于 2013-07-15T20:07:42.097 回答