【发布时间】:2012-09-06 06:37:35
【问题描述】:
我想获取其created_at 日期最接近当前日期的记录。如何使用活动记录的 where 子句做到这一点?
【问题讨论】:
标签: activerecord ruby-on-rails-3.2
我想获取其created_at 日期最接近当前日期的记录。如何使用活动记录的 where 子句做到这一点?
【问题讨论】:
标签: activerecord ruby-on-rails-3.2
您可以通过以下方式找到过去最接近的记录:
Record.where("created_at <= ?", Date.today).order_by("created_at DESC").limit(1)
同样,你可以在未来拥有最接近的记录
Record.where("created_at >= ?", Date.today).order_by("created_at ASC").limit(1)
然后比较最接近当前日期的那个...
可能有一个解决方案可以通过单个请求来完成,但我找不到方法(如果您使用的是 SQL 服务器,有一种方法 DATEDIFF 可以提供帮助)。
更新:感谢米沙
如果您确定所有 created_at 都已过去,则您正在查看最后创建的记录,该记录可以写入
Record.order("created_at").last
更新
要让所有记录的创建日期与最后一条记录相同:
last_record_date = Record.max(:created_at)
Record.where(:created_at => (last_record_date.at_beginning_of_day)..(last_record_date.end_of_day))
【讨论】:
created_date,但如果你使用Rails的自动时间戳就不会发生。所以你可以省略where 子句。使用order_by("created_at DESC") 就足够了。
created_at,而不认为它简化了解决方案。谢谢。