ActiveRecord: включить не работает для own_to с external_key
-
19-09-2019 - |
Вопрос
У меня есть две модели, настроенные следующим образом:
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