Ell*_*iot 55 ruby ruby-on-rails ruby-on-rails-3
我想知道是否有办法在rails3中找到表中的最新记录?
谢谢
埃利奥特
Dyl*_*kow 121
给定Post模型,你可以做到 @post = Post.order("created_at").last
(我之所以不做的原因@post = Post.last是因为它总是默认按主键排序(通常id).大多数时候这很好,但我确定有一个可能导致问题的情况(例如设置自定义)记录上的ID,影响主键排序/自动编号的数据库更改等.)按created_at时间戳排序可确保您真正获得最新记录).
jem*_*ger 21
虽然dmarkow的答案在技术上是正确的,但您需要在created_at上创建索引,否则随着数据库的增长而冒着越来越慢的查询风险.
如果您知道您的"id"列是自动增量主键(可能是它),那么只需使用它,因为它是定义的索引.
此外,除非AREL被优化为仅在find(:last)中选择一个记录,否则您将冒险选择所有记录,然后使用"last()"方法返回最后一个记录.更有效的是将结果限制为一:
MyModel.last(:order => "id asc", :limit => 1)
Run Code Online (Sandbox Code Playgroud)
要么
MyModel.first(:order => "id desc", :limit => 1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47023 次 |
| 最近记录: |