through rails many has_one has_many has_and_belongs_to_many has example create belongs and active ruby-on-rails postgresql activerecord has-many

ruby-on-rails - many - rails has_one through



PostgreSQL, Rails y: order=> problem (3)

Me encontré con algo similar antes y creo que es un error AR relacionado con PGSQL ( https://rails.lighthouseapp.com/projects/8994/tickets/1711-has- many-through-association-with-order-causes-a -sql-error-with-postgresql ).

Lo solucioné abandonando la directiva DISTINCT (: uniq) y resolví los registros de uniq de otra manera. Aunque un poco fastidioso.

Tengo la siguiente línea en mi modelo ActiveRecord:

class Record < ActiveRecord::Base has_many :users, :through => :record_users, :uniq => true, :order => "record_users.index ASC"

Esto está destinado a permitirme leer los usuarios de registro de una manera que ordeno usando un campo de índice en el modelo de usuarios de registro.

El problema es que esto falla en PostgreSQL con el siguiente error:

ActionView::TemplateError (PGError: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list

¿Hay alguna manera de arreglar la declaración para que funcione?


Supongo que podrías llamarlo un error en ActiveRecord. PosgreSQL es un poco más restrictivo que MySQL. Puede ayudar a ActiveRecord configurando la asociación como esta en su lugar:

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


Acabo de publicar este problema en el rastreador de problemas de rails en github (copiado del ticket del faro para poder traerlo de vuelta ... se marcó como no válido):

https://github.com/rails/rails/issues/520

¡Promociona esto si quieres que esto se arregle bien! :)