質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

12815閲覧

sort_by 複数条件下 で 並び替える方法

RubtMDqy2op3pZh

総合スコア8

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2019/12/10 14:07

編集2019/12/10 14:54

前提・実現したいこと

下記のような配列があったとして、
priority でsort_by して priority 基準で昇順降順にした後、
priority が同じ値の中だけで idを昇順 にしたいのですが、方法が分かりません
※ [<priority: 3, id: 1>,<priority: 3, id: 3>,<priority: 2, id: 2>]のようにしたいです。

状況としては、rspecにて、上記の様な配列を求めたいためorderも使えない状況です。

下記のような配列

example = [#<FrequentlyAskedQuestion:0x00007f9da9013710 id: 293, priority: 5>, #<FrequentlyAskedQuestion:0x00007f9da1e66630 id: 294, priority: 9>, #<FrequentlyAskedQuestion:0x00007f9da1e6c648 id: 295, priority: 3>, #<FrequentlyAskedQuestion:0x00007f9da1e7ea28 id: 296, priority: 4>, #<FrequentlyAskedQuestion:0x00007f9da1e84860 id: 297, priority: 6>]

発生している問題・エラーメッセージ・試したこと

.sort_by(&:id).sort_by(&:priority).reverse
などしてみたのですが、求めている配列になりませんでした。

補足情報(FW/ツールのバージョンなど)

ruby 2.6
rails 5.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Ruby

1example.sort_by{|x| [x.id, x.priority]}

でしょうか。

あと、exampleのスペルがおかしいです。

投稿2019/12/10 14:32

otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RubtMDqy2op3pZh

2019/12/10 14:46 編集

ありがとうございます。 すみません、教えて頂いた方法でx.priorityは降順 x.idは昇順にしたい場合、どうしたら良いでしょうか 本当にすみません ※exampleに変更しました
otn

2019/12/10 15:16

ああ、priorityが優先か。回答は間違いです。 [-x.priority, x.id] ですね。-を付ければ逆になるので。
RubtMDqy2op3pZh

2019/12/10 15:17

ありがとうございます!!!!!!!!!! 神です!!!!!! これで、帰れます????‍♂️????‍♂️????‍♂️
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問