我以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]
,即最後一條消息在最上面。
我已經試過是:
scope :last_page, ->() { order('created_at DESC').limit(10).sort_by(&:created_at) }
產生期望的結果,而是返回數組,而不是ActiveRecord::Relation
。我喜歡範圍返回關係而不是數組。我怎樣才能做到這一點?
不能使用的範圍內'sort_by'。範圍是鏈接併爲您構建SQL。 'sort_by'是Ruby可枚舉的方法,用於處理內存中的數據。你需要應用一些其他的技巧 –
完全正確。我會問你爲什麼要排序? '命令'('...')'是否照顧這個? – jaydel