ActiveRecord: включите, не работает для own_to с foreign_key - PullRequest
1 голос
/ 09 февраля 2010

У меня есть две модели, настроенные так:

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?

Ответы [ 2 ]

2 голосов
/ 16 марта 2010

Я только что столкнулся с этой же проблемой. Существует патч , который применяется к Rails 2.3.5 для ошибка # 3208 , но он еще не применен к 2-3-stable ветви.

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

1 голос
/ 21 февраля 2011

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

named_scope :my_all, :include => :user
...