2011-09-13 3 views
0

레일스 프로젝트에서 사용자에게 연결된 여러 모델이 있는데 페이지에 표시된 모든 사용자 데이터를 가져 오려고 시도하는로드 문제가 있습니다. : 잘못된 값으로 검색을 포함합니다.

내 모델 선언

이 같은 종류의 모양 : 나는 폐쇄 투표에 대한 SQL 테이블에 점에 유의해야한다

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 

, user_id는 사용자의 테이블에 server_user_id와 같은 값입니다.

레일 쿼리에서 :include 심볼을 사용하려고하면 user.server_user_id을 통해 폐쇄 투표 및 설정 노트를 찾아야 할 때 검색 값으로 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) 

를 생성합니다. 관련 SQL 쿼리를 보내도록 레일즈 쿼리/모델을 포맷하는 방법이 있습니까? 아니면 사용자와 관련된 모든 모델에 원시 쿼리를 작성해야합니까? 그렇다면 어떻게해야합니까?

감사합니다. 과 같이 primary_key와 옵션 : I은 사용자 모델 (즉, 사용자가 server_user_id 필드가) 제대로 이해하고

답변

0

당신은 설정해야

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

감사합니다! 내가 보아 왔던 레일즈 리소스가 전혀 없다는 암시는 전혀 없었다. – bourgtai

관련 문제