2009-03-23 3 views
4

Простой вопрос: Мне нужна помощь в написании инструкции ActiveRecord find_all_by, где я хочу заказать вещи от самых новых созданных объектов до самых старых.Найти самые новые объекты в ActiveRecord

В дополнение к этому вопросу: Если я сохранил результаты в переменной @records. Как я могу попросить следующую запись? Я хочу сделать что-то вроде @current_record = @records.next

ответ

6

Этот код будет делать ваш первоначальный запрос

@records = Model.find_all_by_column('value', :order => 'created_at DESC') 

И по отношению к вашей последующей деятельности. Если вы хотите перебрать возвращаемый массив, то вы можете сделать следующий

@records.each do |record| 
    # Code to do something 
end 

В пределах итератора вы можете установить флаг, когда вы видите конкретную запись, то сделать что-то со следующей записью в итераторе.

Если вы хотите, чтобы проверить, есть ли какие-либо записи в массиве, возвращаемом искателем, то вы можете проверить @ records.length

+0

является каждый. сделать единственную структуру управления в Ruby, когда у вас есть набор записей? – alamodey

+0

Также, как вы проверяете, действительно ли у @records есть какие-либо объекты? Я сделал if @records == nil check, но кажется, что это неверно, даже если в таблице Model нет ничего. – alamodey

+0

Существует множество способов перебора массивов, что есть у вас с результатом ActiveRecord. Попробуйте взглянуть на http://apidock.com/ruby/Array, http://apidock.com/ruby/Enumerable (Array смешивает это), и ActiveSupport в Rails добавляется больше. –

0
Model.find_all_by_column_name('something', :order => "...") 
0

на вопрос 2: Что вы имеете в виду под «следующей записи Это" ?

, если вы ищете способ отображения результатов, это удобно использовать каждый:

<% @records.each do |record| %> 
    #... 
<% end %> 

или даже лучше, с частичным

<%= render :partial => 'record', :collection => @records %> 
Смежные вопросы