たとえば、game_dateでソートしたいのですが、日付が同じ場合はチームでソートしますか?これを行う最善の方法は何でしょうか?あなたはルビーを使用したい場合はルビー/レールを2つのフィールドでソートするにはどうすればよいですか?
@teams = @user.teams
@games = @teams.reduce([]) { |aggregate, team| aggregate + team.games}.sort_by(&:game_date)
たとえば、game_dateでソートしたいのですが、日付が同じ場合はチームでソートしますか?これを行う最善の方法は何でしょうか?あなたはルビーを使用したい場合はルビー/レールを2つのフィールドでソートするにはどうすればよいですか?
@teams = @user.teams
@games = @teams.reduce([]) { |aggregate, team| aggregate + team.games}.sort_by(&:game_date)
最良の方法は、それを自分のデータベースをない持っていることだろうが:
Array
のソート動作は、その後、最初のメンバーでソートすることです
@games = @data.sort_by {|x| [x.game_date, x.team] }
第2、第3、···というようになります。日付をプライマリキー、チームを第2のキーとしたいので、それらの2つの配列を使用して、必要な方法で並べ替えます。
あなたはこれらの二つのフィールドModel.all持つモデルしたと仮定した場合、
@teams = @user.teams
@games = @teams.games.order("game_date ASC, team ASC")
@teamsは配列または関係です。それはどのように 'ゲーム'方法を持っていますか? – Swards
こんにちは、この応答のおかげで、これを使用して私の問題を解決しました:@service_history = @ vehicle.services.order( "終了ASC、date_closed DESC" – jared
可能であれば、SQLの順序を使用するため、配列をソートするよりも高速で、ページネーションがうまく機能するため、これはより優れていると思います。右? – light24bulbs
:あなたができる、フィールド包み
複数のテーブルである(順序=> 'attribute1と、attribute2のは')結合を使用します。
異なる名前の日付フィールドを持つ2つの異なるオブジェクトを含む配列をソートする場合は、モデル内の属性エイリアスメソッドでこれを行うことができます。
注:.sort_by!を使用します。破壊的に機能しません。
def release_date
self.publish_date
end
@grid_elements = @news + @albums
@grid_elements = @grid_elements.sort_by(&:release_date)
@teams = @user.teams
@games = @teams.games.order(game_date: :asc, team: :asc)
問題は、ユーザが、持っている多くのチームとチームがゲーム-多くを持っているので、私は移動する方法を確認していないということですゲームレベルまで下がっているので、dbレベルでこれを行う方法がわからないのですか? – Kamilski81
これらのキーのそれぞれについても方向を指定する方法はありますか? – mehulkar
@ daniel-pittmanありがとう!また、いくつかのキーでソートすることもできます。 '@games = @ data.sort_by {| x、y | [x.game_date、y.name]} ' –