ActiveRecord:包括不使用foreign_to和foreign_key

时间:2010-02-09 18:16:47

标签: ruby-on-rails activerecord include belongs-to

我有两个模型设置如下:

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是否有问题?

2 个答案:

答案 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