2009-03-23 7 views
4

簡単な質問:ActiveRecord find_all_by文を書くのに助けが必要です。最新の作成されたオブジェクトから古いものまで注文したいと思っています。ActiveRecordで最新のオブジェクトを見つける

この質問のフォローアップとして:結果を変数@recordsに保存した場合。どのようにしてそれに次のレコードを求めるのですか?私はあなたの最初のクエリに

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

そして、あなたのフォローアップに関してを行います@current_record = @records.next

答えて

6

このコードのような何かをしたいです。あなたが返される配列を反復処理したいなら、あなたはあなたが特定のレコードを参照してくださいイテレータの次のレコードを持つ何かをするときにフラグを設定することができ、イテレータ内に次の

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

を行うことができます。

あなたはファインダーによって返される配列内のすべてのレコードがあるかどうかを確認したいなら、あなたは質問2のためにrecords.length

+0

では、各です。あなたはレコードのセットを持っているときにRubyで唯一の制御構造をしますか? – alamodey

+0

また、@recordsに実際にオブジェクトがあるかどうかを確認するにはどうすればよいですか? if @records == nilチェックを行いましたが、Modelテーブルに何も持っていなくてもfalseであるようです。 – alamodey

+0

すべての種類の配列を繰り返し処理する方法があります。これは、ActiveRecordの結果を持つ方法です。 http://apidock.com/ruby/Array、http://apidock.com/ruby/Enumerable(Array in this in)を参照してください.RailsにActiveSupportが追加されました。 –

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

@確認することができます:あなたは、「次のレコード内で何を意味していますそれ" ?

あなたは結果を表示する方法を探している場合、それはそれぞれを使用すると便利です:

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

あるいはさらに良い、部分的

<%= render :partial => 'record', :collection => @records %> 
関連する問題