LoginSignup
0
2

More than 3 years have passed since last update.

[Rails]DMリストの表示順をjoinsを使用してソートする

Posted at

はじめに

前回の記事で作成したDMリストを、上からやりとりの新しい順に表示させます。
前回作成したコントローラーの記述を編集するだけで、すごい簡単に出来ます。
仕様などは以下を参考にしてください。
[Rails]DMユーザーリストを表示

コントローラーの編集

orderを使用して、messagesテーブルのcreated_atで基準に並べ替えたいのですが、orderで他のテーブルを使う場合は、joinsでINNER JOINをしてあげないと探せないため、以下のように書きます。

rooms_controller.rb
  def index
    @rooms = current_user.rooms.joins(:messages).includes(:messages).order("messages.created_at DESC")
  end

これだけで新しい順に並べることができます。

つまずき

NG.rb
@rooms = current_user.rooms.joins(:messages).includes(:messages).order("created_at DESC")

と最初書いていたのですが、これではどのテーブルの created_at を参照するのかがわからずエラーとなりました。
ということで以下のように編集したところ、直すことができました。

OK.rb
@rooms = current_user.rooms.joins(:messages).includes(:messages).order("messages.created_at DESC")

おわり

最後まで読んでいただき、ありがとうございました。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2