Rails:Date.today过去的地方OR是:deadline_date

时间:2013-07-15 20:01:16

标签: ruby-on-rails

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

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

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

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

提前致谢

2 个答案:

答案 0 :(得分:5)

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

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

注意小于或等于。

的顺序

如果你经常遇到这样的问题,那么Squeel可能值得研究。但是,我倾向于偏离使用“hackery”一词的图书馆

答案 1 :(得分:-2)

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

应该像

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

修改

我从未见过用于分隔查询的两个部分的逗号(不确定是否可能),我会这样做(2 where个句由AND加入{ {1}}:

ActiveRecord

如果没有 @email_reminder = ToDo.where(:reminder => true).where({ deadline_date <= Date.today }) ,就会像

一样
squeel

另外,请注意我在查询中翻了.where("deadline_date <= ?", Date.today) =符号