在Rails 3中find最新的logging

我想知道是否有办法在rails3的表中find最新的logging?

谢谢

埃利奥特

给定一个Post模型,你可以做@post = Post.order("created_at").last

(我之所以不只是做一个@post = Post.last是因为它总是默认按你的主键(通常是id )进行sorting,大多数时间没问题,但我确定有一种情况,可能会导致问题(例如设置logging上的自定义ID,影响主键sorting/自动编号的数据库更改等),通过created_at时间戳进行sorting可确保您真正获取最新logging)。

虽然dmarkow的答案在技术上是正确的,但您需要在created_at上创build一个索引,否则随着数据库的增长,查询速度会越来越慢。

如果你知道你的“id”列是一个自动递增的主键(它可能是),那么就使用它,因为它是一个定义的索引。

另外,除非AREL被优化为在find(:last)中只select一条logging,否则将冒着select所有logging的风险,然后使用“last()”方法返回最后一条logging。 更高效的是将结果限制为一个:

 MyModel.last(:order => "id asc", :limit => 1) 

要么

 MyModel.first(:order => "id desc", :limit => 1) 

是的,你可以使用方法.last

所以如果你的模型叫Post,那么:

 >> Post.last => #<Post ...> 

您可能会遇到一个模糊性问题使用created_at在一个足够高的stream量表上。

例如。 尝试:

 INSERT INTO table (created_at) VALUES ( NOW() ); INSERT INTO table (created_at) VALUES ( NOW() ); 

..有可能具有相同的created_at ,只有1秒的分辨率。 一个sorting会返回他们没有特定的顺序。

你可能会更好地存储microtime价值和sorting。

尝试一下名为ModelName的模型:

 record = ModelName.last