【问题标题】:Find last created_at record查找最后一个 created_at 记录
【发布时间】:2018-09-10 10:10:58
【问题描述】:

如何通过 created_at 字段找到最后一条记录?

Record.order("created_at").last

Record.where(:created_at).last

两者都没有,还有更好的方法吗?

【问题讨论】:

  • Record.order(created_at: :desc).first
  • 谢谢@大鹏114!如果我要查找最新(最后)记录,为什么要使用“.first”?不是 Record.where(created_at: :desc).last 吗? (我知道你有你的理由,我可能错了,但想更好地理解它)
  • 我的答案与您的第一个选项相同。 Article Load (0.5ms) SELECT `articles`.* FROM `articles` ORDER BY `articles`.`created_at` DESC LIMIT 1
  • @Dapeng114 知道了!!谢谢!

标签: ruby-on-rails ruby activerecord


【解决方案1】:

这是一个有效的请求

Record.order(created_at: :desc).first

不过,请注意该字段上的树索引以获得更好的性能

【讨论】:

  • 那么从数据库中获取最新/最新记录是:Record.order(created_at: :desc).lastRecord.order(created_at: :desc).first 就像有人之前建议的那样?还?树索引?
  • 对不起,当然是first。或Record.order(created_at: :asc).last。树索引是一种“有序”类型的索引,可以轻松检索已排序的数据。搜索“mysql/postgresql 中的 btree 索引”或您选择的其他 rdbms。
【解决方案2】:

在 Rails 中,你也可以添加行

default_scope { order(created_at: :asc) } 

到 Record 模型以确保 Record.last 的行为符合预期,您可以找到最新的记录

可以参考链接scopes in rails

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    相关资源
    最近更新 更多