2011-09-13 67 views
0

我在一個Rails項目中有多個模型鏈接到一個用戶,並且我遇到了一個加載問題,我試圖讓所有用戶的數據顯示在頁面上。:包含具有錯誤值的搜索

我的模型聲明看起來有點像這樣:

class User < ActiveRecord::Base 
    validates_presence_of :server_user_id 
    has_many :setup_notes, :foreign_key => "server_user_id" 
    has_many :closure_votes, :foreign_key => "user_id" 
end 

class SetupNote < ActiveRecord::Base 
    belongs_to :user, :foreign_key => "server_user_id" 
end 

我要指出,在關閉投票SQL表,user_id是在表中的用戶相同的值server_user_id

當我嘗試使用在Rails查詢:include符號,它結束了使用user.id用於搜索值的時候,我需要通過user.server_user_id找到封票和安裝注意事項。換句話說,

me = User.first(:conditions => ["server_user_id = ?", 12610], :include => :setup_notes) 

產生MySQL查詢

SELECT `setup_notes`.* FROM `setup_notes` WHERE (`setup_notes`.server_user_id = 1) 

它返回一個空集。有什麼辦法來格式化Rails查詢/模型來發送相關的SQL查詢,還是我需要爲與用戶關聯的所有模型編寫一個原始查詢(如果是這種情況,我該怎麼做?)

謝謝!

回答

0

如果我理解正確的(即用戶擁有server_user_id場),在用戶模式,你必須設置:primary_key選項,如下所示:

class User < ActiveRecord::Base 
    validates_presence_of :server_user_id 
    has_many :setup_notes, :foreign_key => "server_user_id", :primary_key => "server_user_id" 
    has_many :closure_votes, :foreign_key => "user_id", :primary_key => "server_user_id" 
end 
+0

謝謝!絕對沒有任何我看過的Rails資源甚至暗示這是可能的。 – bourgtai