activerecord - 查找最接近当前日期创建的记录

标签 activerecord ruby-on-rails-3.2

我想获取包含 created_at 的记录最接近当前日期的日期。我如何使用事件记录来做到这一点 where条款?

最佳答案

您可以使用以下内容找到过去最接近的记录:

Record.where("created_at <= ?", Date.today).order_by("created_at DESC").limit(1)

同样,你可以在 future 拥有最近的记录
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))

关于activerecord - 查找最接近当前日期创建的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12294272/

相关文章:

ruby - 每当 Activerecord 的 :after_save callbacks trigger 触发回调

ruby - 计数、尺寸、长度……Ruby 中的选择太多了吗?

mysql - 当我发送整数时,在带有数据类型字符串的 Rails ActiveRecord 列中搜索速度很慢

ruby-on-rails - 为什么 ActiveRecord 在引发 StatementInvalid 错误后返回一个空数组?

ruby-on-rails - Rails 从 3.2.3 升级到 3.2.11

ruby-on-rails - 在请求 : Thread Safe? 期间设置 Time.zone

sql - ActiveRecord 中多列的索引

ruby-on-rails - Rails 3.2 频繁出现 postgres prepared statement already exists 错误

ruby-on-rails - 如何寻址 "DEPRECATION WARNING: ActiveSupport::Memoizable is deprecated and will be removed in future releases"?

ruby-on-rails - 响应Ajax请求后,如何清除Rails闪存对象?