2009-03-23 13 views
4

Einfache Frage: Ich brauche Hilfe beim Schreiben einer ActiveRecord find_all_by Anweisung, wo ich Dinge von den neuesten erstellten Objekte zu ältesten bestellen möchte.Finden Sie die neuesten Objekte in ActiveRecord

Als Follow-up zu dieser Frage: Wenn ich die Ergebnisse in einer Variablen gespeichert @records. Wie frage ich dann nach dem nächsten Datensatz darin? Ich möchte etwas tun, wie @current_record = @records.next

Antwort

6

Dieser Code wird Ihre erste Abfrage

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

Und in Bezug auf Ihre Follow-up tun. Wenn Sie das zurückgegebene Array iterieren möchten, dann können Sie folgendes tun

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

Im Iterator Sie ein Flag setzen könnte, wenn Sie einen bestimmten Datensatz sehen dann etwas mit dem nächsten Datensatz in der Iterator.

Wenn Sie überprüfen wollen, ob es irgendwelche Aufzeichnungen in den vom Finder zurückgegebenen Arrays sind, dann können Sie @ records.length überprüfen

+0

jeweils. Machen Sie die einzige Kontrollstruktur in Ruby, wenn Sie eine Reihe von Datensätzen haben? – alamodey

+0

Wie überprüfen Sie, ob @records tatsächlich Objekte enthält? Ich habe einen if @records == nil-Check gemacht, aber es scheint, dass es falsch ist, auch wenn ich nichts in der Model-Tabelle habe. – alamodey

+0

Es gibt alle Arten von Möglichkeiten, um Arrays zu iterieren, was Sie mit einem ActiveRecord-Ergebnis haben. Versuchen Sie, http://apidock.com/ruby/Array, http://apidock.com/ruby/Enumerable (Array mischt dies in) und es gibt mehr von ActiveSupport in Rails hinzugefügt. –

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

für Frage 2: Was meinen Sie mit „dem nächsten Datensatz in es "?

, wenn Sie nach einer Möglichkeit, die Suchergebnisse angezeigt wird, ist es praktisch jeder zu verwenden:

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

Oder noch besser, mit einem Teil

<%= render :partial => 'record', :collection => @records %> 
Verwandte Themen