我有两个模型设置如下:
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总是在寻找ID(并使用零):
select * from users where id in (0,0,0,0 ... 0,0)
我做错了什么,或者在与foreign_keys
的{{1}}关系中使用belongs_to
是否有问题?
答案 0 :(得分:2)
我刚遇到同样的问题。 patch适用于bug #3208上的Rails 2.3.5,但尚未应用于2-3-stable分支。
我为此错误创建了monkey patch,因为它导致了我的应用中的性能问题。将fix_belongs_to_include_with_primary_key.rb放在config/inititalizers
目录中,然后重新启动您的应用以应用它。
答案 1 :(得分:1)
我不知道原因,但:include
中的选项named_scope
会使belongs_to
foreign_key
工作。
named_scope :my_all, :include => :user