0

second_to_lastに似てlastいますが、最後のレコードではなく、モデルから最後から 2 番目のレコードを返すメソッドを作成したいと思います。最後のSQLは次のとおりであるため、これは簡単だと思いました。

Select * from "users".* FROM "Users" ORDERED BY "ORDERED BY" "users"."id" DECS LIMIT 1

を変更して最初の要素を選択する方法を見つける必要がLimit 1ありLimit 2ます。私は正しく考えていますか?より良いアプローチはありますか?

4

2 に答える 2

4

これが本当に Rails の質問である場合は、とにかく SQL で行う必要はありません。ただ行う:

User.order("id DESC").offset(1).first

文字通り、次の sql クエリを実行します。

SELECT `users`.* FROM `users` ORDER BY id DESC LIMIT 1 OFFSET 1
于 2013-01-12T22:33:39.637 に答える
2

あなたは正しい軌道に乗っていたと思います。次のようなことを試してください:

User.order("created_at DESC").limit(2).last

これにより、最後から 2 番目のレコードが返されます。

新しいメソッドでRailsを拡張する方法さえありますが、それはおそらくあなたの質問の範囲を超えています.

さらに良いことに、User.last(2) を使用できます。私はそれよりもはるかに単純にはなりません。

于 2013-01-12T22:41:03.050 に答える