2011-10-09 14 views
5

Tengo un modelo que recopila datos financieros de mis clientes cada trimestre calendario de cada año (así: trimestre 1, 2, 3 y 4 para cualquier año dado). Para simplificar, el modelo se denomina Cuarto y tiene: atributos client_id,: quarter,: year y: amount. Quiero poder consultar y mostrar las últimas cuatro entradas para el atributo: amount basado en el trimestre que se muestra actualmente.Rieles 3- Recuperar los últimos N registros

Entonces, por ejemplo, si estoy viendo: trimestre 3 para: año 2011, entonces quiero mostrar el: monto para el trimestre actual (que es fácil), así como el: monto para: trimestre 2 & 1 para: año 2011, y: cuarto trimestre para: año 2010. ¿Tiene sentido?

Hice este trabajo asignando una variable diferente a cada registro que quiero recuperar, y luego uso declaraciones elsif para encontrarlo, pero sé que tiene que haber una manera más clara de hacerlo.

¿Cómo puedo hacer esto?

Respuesta

7

con la interfaz de consulta 2.x Rieles la respuesta es:

Quarter.find(:all, :order => :year, :limit => 4).reverse 

con la interfaz de consulta 3.x Rieles la respuesta es:

Quarter.order(:by => :year).limit(4).reverse 

por cierto. Creo que no debe almacenar sus datos en un modelo llamado "Quarter", sino en un modelo llamado "FinancialData" y que ese modelo tenga un atributo "quarter" que contendría 2011/1, 2011/2, o que tenga dos atributos : año y: trimestre que deben ser indexados juntos

Ver también:

http://guides.rubyonrails.org/active_record_querying.html

http://m.onkey.org/active-record-query-interface

+0

Cool man, thanks. Lo siento, soy bastante nuevo en esto, ¿cómo podría poner esto en mi vista para mostrar solo las entradas para el atributo: amount? – FattRyan

+0

revise este sitio web: http://railscasts.com/ - tiene episodios realmente útiles - algunos en el nivel principiante, otros en el nivel avanzado. Quizás busque "Ver" allí. – Tilo

+0

Gracias de nuevo Tilo. Lo que hice fue simplemente asignar una variable a esta consulta en mi controlador, algo así como: @lastfouritems = query, luego visualicé esa variable en mi opinión. Sin embargo, lo que hace es mostrar todos los atributos de mi modelo en una lista enorme, en lugar de solo el atributo: amount. ¿Cómo aislo este atributo y solo lo muestro? – FattRyan

6

para recuperar la última N registros:

Quarter.last(n).reverse 
+0

Esto funciona para Rails 4 y superior – SsouLlesS

1
User.all.order("id desc").limit(40) 
Cuestiones relacionadas