2011-06-17 10 views
1

この私のコード:私は、データベースからステータスすべての私の友人を取って、壁にそれらをputingてる最新のものから古いものへのレコードの注文方法を教えてください。

@statuses = [] 
current_user.friends.each do |f| 
    @statuses = @statuses + f.statuses 
end 
@sorted_statuses = @statuses.sort_by { |obj| obj.created_at } 

。 私はそれらを新しい(上の)ものから古いもの(下のもの)に表示しようとしています。変更方法を教えてください。

答えて

6

アレイを事前に宣言する必要はなく、別の行に処理をポストする必要もありません。注文はデータベースを介して行うことができます。ルビーの方法がされています。そのイムはエラーではなく、その古いから新しいになっていない、動作しない

@statuses = current_user.friends.order('created_at DESC').collect {|f| f.statuses} 
+0

であなたのモデルのデフォルトの順序を定義することができます。 – user804968

+0

私はそれを得ることはありませんtnx – user804968

+1

データベースに並べ替えを行わせることは、結果の数が実際に戻ってくれるよりも大きい場合は、データベースから返された結果の数を制限することができますあなたは最新のものを順番に持っています。 – RHSeeger

1

あなたもdefault_scope

class Person < ActiveRecord::Base 
    default_scope order('last_name, first_name') 
end 
関連する問題