Bạn có thể thử những cách sau:
Message.where(to: current_user.id)
.order(:created_at)
.group_by(&:user_id)
.map{|_, x| x.last}
Điều này sẽ đưa ra thông báo cuối cùng (bởi created_at
) từ mỗi user_id
.
Miễn là bạn đang sử dụng Postgresql, bạn có thể thử distinct on
cách tiếp cận:
Message.where(to: current_user.id)
.order(user_id: :asc, created_at: :desc)
.select('distinct on (user_id) *')