2012-02-13 11 views
8

Mam następujące dane w bazie danych:Rails 3 - ActiveRecord i Reverse Sort

1 
2 
3 
4 
5 

I chciałbym dostać się do wyjścia to:

3 
4 
5 

muszę go wydrukować w widoku:

<%car.colors.limit(3).order('created_at ASC').each do |color|%> 
    ... 

wiem, że istnieje reverse_order, ale istnieje coś takiego sortowanie odwrócone?

(wiem, że jest możliwe, aby załadować dane do tablicy, a następnie przejść przez tablicę, ale w ten sposób nie jest bardzo wydajne)

Odpowiedz

20

Jak o właśnie robi

<%car.colors.limit(3).order('created_at DESC').reverse.each do |color|%> 
+0

hah, że to podstęp, tak proste. – user984621

+0

Czy anonimowy downwaker chciałby mi powiedzieć, co mam nie tak? – Chowlett

+1

Ta metoda odwraca dane po pobraniu z bazy danych. Odpowiedź od JellicleCat wykorzystuje bazę danych do sortowania. –

18

dla szyn 4 :

[Model].order(column: :desc) 

szyn 3:

[Model].order("<column> DESC") 

Dla szyn 2:

[Model].all(:order => "<column> DESC") 
0

Jedna linia Rozwiązanie

w użyciu kontrolera:

class Api::ImagesController < ApplicationController 

    def index 
    @posts = Post.all.paginate(:page => params[:page], :per_page => 4).order(id: :desc) 
    render :json => @posts.to_json(:methods => [:image_url]) 
    end 

end 
Powiązane problemy