ユーザーメッセージをdbに格納します。私は最後の10レコードを照会し、それらを逆順に返す必要があるので、ユーザーがmessage_1、message_2、およびmessage_3を作成すると仮定します。結果は次のようになります:[message_1, message_2, message_3]
、すなわち最後のメッセージは最後の結果です。しかし、この範囲:最後のレコードをスコープNの逆順で照会します。
scope :last_page, ->() { order('created_at DESC').limit(10)
は、最後のメッセージが上にある、つまり[message_3, message_2, message_1]
のようなレコードを返します。私が試した何
は次のとおりです。
むしろActiveRecord::Relation
よりも、望ましい結果を生成するが、配列を返す
scope :last_page, ->() { order('created_at DESC').limit(10).sort_by(&:created_at) }
。私は配列よりむしろ関係を返すスコープが大好きです。それをどうすれば実現できますか?
あなたは範囲内の 'sort_by'を使用することはできません。スコープはチェーンであり、SQLを構築します。 'sort_by'はRubyの列挙可能なメソッドで、データをメモリ内で処理します。あなたはちょうど他のトリック –
を正確に適用する必要があります。私はあなたが選別している理由を尋ねるだろうか? 'order( '...')'はそれを気にかけないのですか? – jaydel