Você pode testar o SQL com este SQLFIDDLE .
Apenas SQLite e MySql suportam esse uso, mas outros não.
Consulte este documento postgresql .
Uma limitação desse recurso é que uma cláusula ORDER BY aplicada ao resultado de uma cláusula UNION, INTERSECT ou EXCEPT pode especificar apenas um nome ou número de coluna de saída, não uma expressão.
Para o seu caso, não há necessidade de usar uniq, todos os IDs de usuário já são distintos, então por que você não tenta isso:
User.order("email DESC").pluck(:id)
Supondo que os ids sejam duplicados, você pode uniq por ruby em vez de DB.
User.order("email DESC").pluck(:id).uniq
Este script nunca irá gerar sql com distinct. Este
uniq
depois de arrancar é um Array#uniq
método.