sql >> Base de Datos >  >> RDS >> PostgreSQL

Mostrar el último hijo en la iteración de reacción

Puedes intentar lo siguiente:

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

Esto debería dar el último mensaje (por created_at ) de cada user_id .

Mientras esté usando Postgresql, puede probar distinct on enfoque:

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