ActiveRecordとソート

2018-09-20

rails, active record

[お題]Railsアプリで usersテーブルを年齢(age)ごとにカウントして昇順

1
User.group(:age).count.sort {|a,b| a[1] <=> b[1] }

降順にしたければ reverse すればいいじゃない

1
User.group(:age).count.sort {|a,b| a[1] <=> b[1] }.reverse

ruby 2.7以降ならtallyもアリか

1
User.pluck(:age).tally.sort {|a,b| a[1] <=> b[1] }.reverse
1
User.select("COUNT(*) as cnt, age").group(:age)

降順にしたければ order すればいいじゃない

1
User.select("COUNT(*) as cnt, age").group(:age).order("cnt DESC")

まとめ

個人的にはクエリでやる方が好み

コメント

投稿する

投稿したコメントはご自身で削除できません

不適切なコメントと判断した場合は管理側で削除することがあります