次のことを試すことができます:
Message.where(to: current_user.id)
.order(:created_at)
.group_by(&:user_id)
.map{|_, x| x.last}
これにより、最後のメッセージが表示されます(created_at
による) )各user_id
から 。
Postgresqlを使用している限り、distinct on
を試すことができます アプローチ:
Message.where(to: current_user.id)
.order(user_id: :asc, created_at: :desc)
.select('distinct on (user_id) *')