我的项目模型有 2 个日期时间属性:start_date 和 end_date。现在我想要当前时间在这些日期之间的所有项目。我从 start_date 开始尝试这样的事情:
@projects = Project.where(:start_date <= Time.now)
但这会返回一个错误:
comparison of Symbol with Time failed
有任何想法吗?谢谢!
我的项目模型有 2 个日期时间属性:start_date 和 end_date。现在我想要当前时间在这些日期之间的所有项目。我从 start_date 开始尝试这样的事情:
@projects = Project.where(:start_date <= Time.now)
但这会返回一个错误:
comparison of Symbol with Time failed
有任何想法吗?谢谢!
与某些 ORM 不同,活动记录不会使用方法来增加符号类,以允许以这种方式表达除相等之外的表达式。你只需要做
Project.where('start_date <= ?', Time.now)
尖叫宝石添加了这种东西并允许您编写
Project.where{start_date < Time.now}
你不能这样做::start_date <= Time.now
。您正在与运算符比较符号和日期<=
。
如果要向查询添加条件,请将其作为字符串传递:
Project.where("start_date <= ?", Time.now);
不幸的是,使用比较日期的 where 子句,您将不得不使用 SQL。尝试这样的事情:
@projects = Project.where(['projects.start_date <= ?', Time.now])