PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Rails 3, ActiveRecord, PostgreSQL - La commande .uniq ne fonctionne pas ?

Comme l'erreur indique for SELECT DISTINCT, ORDER BY expressions must appear in select list .Par conséquent, vous devez sélectionner explicitement la clause par laquelle vous commandez.

Voici un exemple, il est similaire à votre cas mais généralisez un peu.

Article.select('articles.*, RANDOM()')
       .joins(:users)
       .where(:column => 'whatever')
       .order('Random()')
       .uniq
       .limit(15)

Donc, incluez explicitement votre ORDER BY clause (dans ce cas RANDOM() ) en utilisant .select() . Comme indiqué ci-dessus, pour que votre requête renvoie les attributs Article, vous devez également les sélectionner explicitement.

J'espère que ça aide; bonne chance