7
votes

PostgreSQL, rails et: commande => problème

J'ai la ligne suivante dans mon modèle ActiveRecord: xxx

ceci est destiné à me permettre de lire enregistrement.utilisateurs d'une manière que je commande à l'aide d'un champ d'index dans le modèle Record_Users .

Le problème est que cela échoue sur PostgreSQL avec l'erreur suivante: xxx

existe un moyen de réparer la déclaration pour le faire fonctionner? < / p>


1 commentaires

Pouvez-vous poster le SQL généré?


3 Réponses :


1
votes

J'ai couru dans quelque chose de similaire auparavant et je crois que c'est un bogue AR lié à pgsql ( https://rails.lighthouseApp.com/projects/8994/tickets/1711-has-many-Argh-Association- avec-commande-causes-a-sql-error-with-postgreSQL ).

Je me suis arrêté en laissant tomber la directive distincte (: UNIQ) et résolue les enregistrements UNIQ Entraînant une autre manière. Genre de bummer cependant.


0 commentaires

10
votes

Je suppose que vous pourriez appeler cela un bug dans Aciverecord. PostgreSQL est un peu plus restrictif que MySQL. Vous pouvez aider Aciverecord en configurant l'association comme celle-ci à la place:

class Record < ActiveRecord::Base
  has_many :users,
   :through => :record_users,
   :select => 'DISTINCT users.*, record_users.index',
   :order => "record_users.index ASC"


6 commentaires

Vous pouvez, puisque c'est. MySQL est un peu plus permissive et non standard dans ce qu'il accepte.


Je ne comprends pas - qu'est-ce qui ne va pas avec ma solution ci-dessus? J'aimerais savoir, parce que je l'utilise dans mon propre projet en cours d'exécution sur Postgres;)


Casper, je ne pense pas que James disait que c'était une mauvaise solution ;-) Aussi, est-ce une faute typographique?


De plus, ma question était - existe-t-il un moyen de résoudre la déclaration pour le faire fonctionner ?. Votre réponse a fonctionné parfaitement!


Cool. Je suppose que j'ai supposé que James avait voté ma réponse et que son commentaire était l'explication de cela - devinez non;)


Je veux dire que j'ai des enregistrements en double!



2
votes

Il suffit de poster ce numéro sur le suivi des émissions de Rails sur GitHub (copié du billet de phare afin que nous puissions le ramener .. Il était marqué invalide):

https://github.com/rails/rails/issues/520 < / p>

Promouvez-le si vous le souhaitez bien! :)


0 commentaires