将Time.now与模型日期进行比较

时间:2012-06-28 15:55:03

标签: ruby-on-rails ruby-on-rails-3

我的Project模型有2个datetime atttributes:start_date和end_date。 现在我想要所有当前时间都在这些日期之间的项目。 我尝试使用start_date开始这样的事情:

@projects = Project.where(:start_date <= Time.now)

但这会返回错误:

comparison of Symbol with Time failed

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:11)

与某些ORM不同,活动记录不会使用方法来扩充符号类,以允许以这种方式表达除等式之外的表达式。你只需要做

Project.where('start_date <= ?', Time.now)

尖叫的宝石添加了这种东西并允许你写

Project.where{start_date < Time.now}

答案 1 :(得分:1)

你不能这样做::start_date <= Time.now。您正在使用<=运算符比较符号和日期。

如果要为查询添加条件,请将其作为字符串传递:

Project.where("start_date <= ?", Time.now);

答案 2 :(得分:0)

不幸的是,使用where子句比较日期,你将不得不进入SQL。尝试这样的事情:

@projects = Project.where(['projects.start_date <= ?', Time.now])