You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rails中创建无字符串的日期比较查询?

正确的Rails日期比较查询实现方式

你尝试的写法错误在于:把Ruby层面的比较表达式直接传给where的哈希参数,既会导致语法错误,也无法实现让数据库执行日期比较的需求(因为delivery_date <= Date.today是在Ruby环境中执行的代码,而非生成SQL条件)。

不用字符串编写查询的话,有两种常用的正确实现方式:

方式一:使用范围语法(推荐)

Rails支持用闭合范围..直接表示“小于等于”的条件,写法简洁直观:

project.active.where(delivery_date: ..Date.today)

这会自动生成对应的SQL:WHERE delivery_date <= '当前日期',完全无需手写字符串条件。

方式二:使用Arel构建查询

如果需要更复杂的条件组合,可以用Arel的面向对象方式构建查询逻辑:

delivery_date_column = Project.arel_table[:delivery_date]
project.active.where(delivery_date_column.lteq(Date.today))

其中lteq是Arel提供的方法,对应“less than or equal to”(小于等于),同样会生成正确的SQL条件。

内容的提问来源于stack exchange,提问作者snloD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:32:02