3

我的项目模型有 2 个日期时间属性:start_date 和 end_date。现在我想要当前时间在这些日期之间的所有项目。我从 start_date 开始尝试这样的事情:

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

但这会返回一个错误:

comparison of Symbol with Time failed

有任何想法吗?谢谢!

4

3 回答 3

12

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

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

尖叫宝石添加了这种东西并允许您编写

Project.where{start_date < Time.now}
于 2012-06-28T15:59:55.803 回答
1

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

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

Project.where("start_date <= ?", Time.now);
于 2012-06-28T16:00:04.970 回答
0

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

@projects = Project.where(['projects.start_date <= ?', Time.now])
于 2012-06-28T16:00:10.400 回答