基本上,我有点卡在这里。我正在使用Rails 3.x.x ..我现在使用的代码如下
@email_reminder = ToDo.where(:reminder => true, :deadline_date =< Date.today)
上面的代码显然不起作用。我用Google搜索,但几乎每个解决方案都是Rails 2.x.x.解。 如果今天的日期已经过去,那么找到我所有“email_reminders”的最有效方法是什么?或者截止日期是
(不必与上面使用的方法类似,但如果你提供一种使用类似方法的方法会有所帮助)
提前致谢
答案 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)
和=
符号