Puoi testare l'SQL con questo SQLFIDDLE .
Solo Sqlite e MySql supportano questo utilizzo, ma altri no.
Fare riferimento a questo documento postgresql .
Una limitazione di questa funzione è che una clausola ORDER BY che si applica al risultato di una clausola UNION, INTERSECT o EXCEPT può specificare solo il nome o il numero di una colonna di output, non un'espressione.
Nel tuo caso, non è necessario utilizzare uniq, tutti gli ID utente sono già distinti, quindi perché non provi questo:
User.order("email DESC").pluck(:id)
Supponendo che gli ID siano duplicati, potresti uniq by ruby invece di DB.
User.order("email DESC").pluck(:id).uniq
Questo script non genererà mai sql con distinto. Questo uniq
dopo il pluck è un Array#uniq
metodo.