asc、descが混在したソートをしたい
解決
複数をソート(asc、descが混在)の場合は、 sort を使用する。
User.all.sort { |a,b| [b.created_at, a.id] <=> [a.created_at, b.id] }.last.id == User.order(created_at: :desc).order(id: :asc).last.id note
# gender asc, name asc p(dogs.sort do |a, b| [a[:gender], a[:name]] <=> [b[:gender], b[:name]] end) # gender desc, name asc p(dogs.sort do |a, b| [b[:gender], a[:name]] <=> [a[:gender], b[:name]] end) # gender asc, name desc p(dogs.sort do |a, b| [a[:gender], b[:name]] <=> [b[:gender], a[:name]] end) ruby - Sorting multiple values by ascending and descending - Stack Overflow
事象
複数をソートをする場合に sort_by を使用していた。
User.all.sort_by { |m| [m.created_at, m.id] }.reverse.last.id == User.order(created_at: :desc).order(id: :asc).last.id This post is licensed under CC BY 4.0 by the author.