Podría probar el SQL con este SQLFIDDLE .
Solo Sqlite y MySql admiten este uso, pero otros no.
Consulte este documento postgresql .
Una limitación de esta función es que una cláusula ORDER BY que se aplica al resultado de una cláusula UNION, INTERSECT o EXCEPT solo puede especificar un nombre o número de columna de salida, no una expresión.
Para su caso, no hay necesidad de usar uniq, todas las identificaciones de usuario ya son distintas, entonces, ¿por qué no intenta esto?:
User.order("email DESC").pluck(:id)
Asumiendo que las identificaciones se duplicaron, podría uniq por ruby en lugar de DB.
User.order("email DESC").pluck(:id).uniq
Este script nunca generará sql con distinto. Este uniq
después de arrancar es un Array#uniq
método.