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?

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top