Bạn có thể kiểm tra SQL bằng SQLFIDDLE này .
Chỉ Sqlite và MySql hỗ trợ cách sử dụng này, còn những người khác thì không.
Tham khảo tài liệu postgresql này .
Hạn chế của tính năng này là mệnh đề ORDER BY áp dụng cho kết quả của mệnh đề UNION, INTERSECT hoặc EXCEPT chỉ có thể chỉ định tên hoặc số cột đầu ra, không phải là một biểu thức.
Đối với trường hợp của bạn, không cần sử dụng uniq, tất cả id người dùng đã khác biệt rồi, vậy tại sao bạn không thử cách này:
User.order("email DESC").pluck(:id)
Giả sử các id bị trùng lặp, bạn có thể uniq bằng ruby thay vì DB.
User.order("email DESC").pluck(:id).uniq
Tập lệnh này sẽ không bao giờ tạo sql với phân biệt. uniq
này sau khi nhổ là một Array#uniq
phương pháp.