2012-02-13 8 views
8

He siguientes datos en la base de datos:Carriles 3 - ActiveRecord y revertir tipo

1 
2 
3 
4 
5 

Y me gustaría llegar a la salida siguiente:

3 
4 
5 

lo necesito para imprimir en la vista:

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

sé que existe reverse_order, pero existen algo así como clasificación inversa?

(sé que es posible cargar los datos en una matriz y luego ir a través de la matriz, pero de esta manera no es muy eficiente)

Respuesta

20

¿Qué tal hacer

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

ja, ese es el truco, tan simple. – user984621

+0

¿Le agradaría al infractor anónimo decirme lo que tengo mal? – Chowlett

+1

Este método invierte los datos después de que se han recuperado de la base de datos. La respuesta de JellicleCat usa la base de datos para ordenarla. –

18

para los carriles 4 :

[Model].order(column: :desc) 

para los carriles 3:

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

para los carriles 2:

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

Una línea Solución

en el uso del controlador:

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 
Cuestiones relacionadas