Je zou de SQL kunnen testen met deze SQLFIDDLE .
Alleen Sqlite en MySql ondersteunen dit gebruik, maar andere niet.
Raadpleeg dit postgresql-document .
Een beperking van deze functie is dat een ORDER BY-clausule die van toepassing is op het resultaat van een UNION-, INTERSECT- of EXCEPT-clausule alleen een uitvoerkolomnaam of -nummer kan specificeren, geen uitdrukking.
In jouw geval is het niet nodig om uniq te gebruiken, alle gebruikers-ID's zijn al duidelijk, dus waarom probeer je dit niet:
User.order("email DESC").pluck(:id)
Ervan uitgaande dat de ID's gedupliceerd zijn, zou je kunnen uniq door ruby in plaats van DB.
User.order("email DESC").pluck(:id).uniq
Dit script zal nooit sql genereren met distinct. Deze uniq
na het plukken is een Array#uniq
methode.