Du kan testa SQL med denna SQLFIDDLE .
Endast Sqlite och MySql stöder denna användning, men andra gör det inte.
Se detta postgresql-dokument .
En begränsning av den här funktionen är att en ORDER BY-sats som gäller resultatet av en UNION-, INTERSECT- eller EXCEPT-sats bara kan ange ett utdatakolumnnamn eller nummer, inte ett uttryck.
För ditt fall finns det inget behov av att använda uniq, alla användar-ID är redan distinkta, så varför inte prova detta:
User.order("email DESC").pluck(:id)
Om du antar att ID:n dupliceras kan du uniq av ruby istället för DB.
User.order("email DESC").pluck(:id).uniq
Detta skript kommer aldrig att generera sql med distinkt. Denna uniq
efter plockning är en Array#uniq
metod.