2012-02-04 4 views

答えて

76

最良の方法は、それを自分のデータベースをない持っていることだろうが:

Arrayのソート動作は、その後、最初のメンバーでソートすることです
@games = @data.sort_by {|x| [x.game_date, x.team] } 

第2、第3、···というようになります。日付をプライマリキー、チームを第2のキーとしたいので、それらの2つの配列を使用して、必要な方法で並べ替えます。

あなたはこれらの二つのフィールド

Model.all持つモデルしたと仮定した場合、

+0

問題は、ユーザが、持っている多くのチームとチームがゲーム-多くを持っているので、私は移動する方法を確認していないということですゲームレベルまで下がっているので、dbレベルでこれを行う方法がわからないのですか? – Kamilski81

+4

これらのキーのそれぞれについても方向を指定する方法はありますか? – mehulkar

+0

@ daniel-pittmanありがとう!また、いくつかのキーでソートすることもできます。 '@games = @ data.sort_by {| x、y | [x.game_date、y.name]} ' –

22
@teams = @user.teams 
@games = @teams.games.order("game_date ASC, team ASC") 
+0

@teamsは配列または関係です。それはどのように 'ゲーム'方法を持っていますか? – Swards

+0

こんにちは、この応答のおかげで、これを使用して私の問題を解決しました:@service_history = @ vehicle.services.order( "終了ASC、date_closed DESC" – jared

+1

可能であれば、SQLの順序を使用するため、配列をソートするよりも高速で、ページネーションがうまく機能するため、これはより優れていると思います。右? – light24bulbs

2

:あなたができる、フィールド包み

複数のテーブルである(順序=> 'attribute1と、attribute2のは')結合を使用します。

0

異なる名前の日付フィールドを持つ2つの異なるオブジェクトを含む配列をソートする場合は、モデル内の属性エイリアスメソッドでこれを行うことができます。

:.sort_by!を使用します。破壊的に機能しません。

News.rb

def release_date 
    self.publish_date 
end 

コントローラ

@grid_elements = @news + @albums 
@grid_elements = @grid_elements.sort_by(&:release_date) 
4
@teams = @user.teams 
@games = @teams.games.order(game_date: :asc, team: :asc) 
関連する問題