Вопрос

У меня есть две модели, настроенные следующим образом:

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

Однако всякий раз, когда я делаю

upload = UserUpload.find(id, :include => :user)

Выдаваемый sql всегда ищет идентификатор (и использует нули):

select * from users where id in (0,0,0,0 ... 0,0)

Я делаю что-то не так или есть проблемы с использованием foreign_keys в belongs_to В отношениях с include?

Это было полезно?

Решение

Я только что столкнулся с этой же проблемой.Есть пластырь это относится к Rails 2.3.5 на ошибка №3208 но это не было применено к 2-3-стабильный филиал еще.

Я создал обезьяна патч за эту ошибку, поскольку она вызывает проблемы с производительностью моего приложения.Место fix_belongs_to_include_with_primary_key.rb в вашей config/inititalizers и перезапустите приложение, чтобы применить его.

Другие советы

Не знаю почему, но вариант :include в named_scope делает belongs_to с foreign_key работающий.

named_scope :my_all, :include => :user
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top