2010-02-09 55 views
1

我有兩個型號設置是這樣的:ActiveRecord的:包括不工作belongs_to的與foreign_key

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_keysinclude的關係是belongs_to

回答

2

我剛剛遇到了同樣的問題。有一個patch適用於Rails 2.3.5的bug #3208,但它尚未應用於2-3-stable分支。

我已經創建了一個monkey patch這個錯誤,因爲它導致我的應用程序的性能問題。將fix_belongs_to_include_with_primary_key.rb放在您的config/inititalizers目錄中,然後重新啓動您的應用程序以應用它。

+0

謝謝!很高興聽到我沒有瘋狂。 – jerhinesmith 2010-03-16 13:11:07

1

我不知道爲什麼,但選項:includenamed_scope使得belongs_toforeign_key工作。

named_scope :my_all, :include => :user