Então você quer todas as visitas do usuário com o horário da última visita.
Em vez de usar
DISTINCT
função, você pode usar GROUP
com MAX
função. A consulta parece
Events.group(:user_id).maximum(:time)
Isso produz os resultados desejados
{21=>Tue, 18 Dec 2018 11:15:24 UTC +00:00, 23=>Thu, 20 Dec 2018 06:42:10 UTC +00:00}
Espero que funcione para voce.
FYIDISTINCT ON(colunas). é a sintaxe do PostgreSQL.