PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Visualizza l'ultimo figlio nell'iterazione della reazione

Puoi provare quanto segue:

Message.where(to: current_user.id)
       .order(:created_at)
       .group_by(&:user_id)
       .map{|_, x| x.last}

Questo dovrebbe dare l'ultimo messaggio (da created_at ) da ogni user_id .

Finché utilizzi Postgresql, puoi provare distinct on approccio:

Message.where(to: current_user.id)
       .order(user_id: :asc, created_at: :desc)
       .select('distinct on (user_id) *')