2012-02-13 4 views
8

я следующие данные в базе данных:Rails 3 - ActiveRecord и обратного рода

1 
2 
3 
4 
5 

И я хотел бы, чтобы добраться до выхода этого:

3 
4 
5 

мне нужно напечатать в виде:

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

Я знаю, что существует reverse_order, но есть что-то вроде обратный вид?

(я знаю, что можно загрузить данные в массив, а затем пройти через массив, но этот способ не очень эффективен)

ответ

20

Как насчет делать

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

ха, это трюк, так просто. – user984621

+0

Может ли анонимный спутник-любитель рассказать мне, что у меня получилось? – Chowlett

+1

Этот метод реверсирует данные после их извлечения из базы данных. Ответ от JellicleCat использует базу данных для ее сортировки. –

18

Для Rails 4 :

[Model].order(column: :desc) 

Для Rails 3:

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

Для Rails 2:

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

Одна линия Решение

в вашем использовании контроллера:

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 
Смежные вопросы