1

我有两个这样设置的模型:

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在与 的belongs_to关系中使用有问题include

4

2 回答 2

2

我刚刚遇到了同样的问题。在bug #3208上有一个适用于 Rails 2.3.5的补丁,但尚未应用于2-3-stable分支。

我为这个错误创建了一个猴子补丁,因为它导致我的应用程序出现性能问题。将fix_belongs_to_include_with_primary_key.rb放在您的config/inititalizers目录中,然后重新启动您的应用程序以应用它。

于 2010-03-16T10:25:22.680 回答
1

我不知道为什么,但选项:includenamed_scopebelongs_to工作foreign_key

named_scope :my_all, :include => :user
于 2011-02-21T10:00:19.810 回答