我想创建一个类似于last的方法second_to_last,但它返回模型的倒数第二条记录,而不是最后一条记录。我认为这将是微不足道的,因为最后的SQL是:
Select * from "users".* FROM "Users" ORDERED BY "ORDERED BY" "users"."id" DECS LIMIT 1我必须找到一种方法将Limit 1更改为Limit 2,然后选择第一个元素。我的想法正确吗?有没有更好的方法?
发布于 2013-01-13 06:41:03
我想你是在正确的轨道上。尝试如下所示:
User.order("created_at DESC").limit(2).last这应该返回倒数第二条记录。
甚至还有用新方法扩展Rails的方法,但这可能超出了您的问题的范围。
更好的是,您可以使用User.last(2)。我没有比这更简单的了。
发布于 2013-01-13 06:33:40
如果这真的是一个rails问题,你无论如何都不需要用SQL来做。只需这样做:
User.order("id DESC").offset(1).first从字面上看,它执行以下sql查询:
SELECT `users`.* FROM `users` ORDER BY id DESC LIMIT 1 OFFSET 1https://stackoverflow.com/questions/14298614
复制相似问题