SQL můžete otestovat pomocí tohoto SQLFIDDLE .
Pouze Sqlite a MySql podporují toto použití, ale ostatní ne.
Podívejte se na tento dokument postgresql .
Omezení této funkce spočívá v tom, že klauzule ORDER BY vztahující se na výsledek klauzule UNION, INTERSECT nebo EXCEPT může specifikovat pouze název nebo číslo výstupního sloupce, nikoli výraz.
Pro váš případ není potřeba používat uniq, všechna uživatelská ID jsou již odlišná, tak proč nezkusit toto:
User.order("email DESC").pluck(:id)
Za předpokladu, že jsou ID duplikována, můžete uniq použít ruby místo DB.
User.order("email DESC").pluck(:id).uniq
Tento skript nikdy nevygeneruje sql s odlišným. Tento uniq
po trhání je Array#uniq
metoda.