ActiveRecord: no incluyen el trabajo de belongs_to con foreign_key
-
19-09-2019 - |
Pregunta
Tengo dos modelos creados de esta manera:
class User < ActiveRecord::Base
# external_id column in database
end
class UserUpload < ActiveRecord::Base
belongs_to :user, :primary_key => "external_id", :foreign_key => "external_user_id"
end
Sin embargo, cada vez que hago
upload = UserUpload.find(id, :include => :user)
El SQL que obtiene emite siempre está buscando Identificación (y usando ceros):
select * from users where id in (0,0,0,0 ... 0,0)
¿Estoy haciendo algo mal, o hay un problema con foreign_keys
en una relación con belongs_to
include
?
Solución
acabo encontramos con este mismo problema. Hay una parche que se aplica a Rails 2.3 0,5 en bug # 3208 pero no se ha aplicado a la 2 -3-estable rama todavía.
He creado una parche mono para este error, ya que está causando problemas de rendimiento en mi aplicación. Coloque fix_belongs_to_include_with_primary_key.rb en su directorio config/inititalizers
y reinicia la aplicación para aplicar a él.
Otros consejos
No sé por qué, pero es una opción :include
en named_scope
hace belongs_to
con foreign_key
de trabajo.
named_scope :my_all, :include => :user