2010-06-19 4 views
0

아래 코드를 작성하여 user.id를 전달할 수있는 방법은 무엇입니까? 주어진 것을 감안할 때 클래스 ID를 찾을 수 없습니다. 오류가 발생합니다. (사용자가 많은 싸움이 있고 싸움이 사용자에 속한 사용자가 하나의 싸움에서 도전자, 또는 기타의 challengee 될 수 있습니다...)has_many 연관 ... 클래스 ID가 없습니다.

has_many :fight_wins, :class_name => 'Fight', :foreign_key => 'challenger_id or challengee_id', 
    :conditions => ["(challenger_id = ? and challenger_won = ?) or (challengee_id = ? and challenger_won = ?)", self.id, true, self.id, false] 
+0

당신이하려는 일을 처리하기 위해 named_scope 또는 scope (rails3)를 사용할 수없는 이유는 무엇입니까? 그러면 간단한 사용자 has_many가 될 것입니다. fights and fights belongs_to : user. –

+0

그래, 할 수있어! 그러나 위의 접근법에 대한 해결책을 알고 싶습니다. – keruilin

답변

0

당신은 복잡한 has_many 조건에 대한 finder_sql 옵션을 사용할 수 있습니다 :

has_many :fight_wins, :class_name => 'Fight', :finder_sql => 
     '#{sanitize_sql_array(
      "SELECT f.* 
      FROM fights AS f 
      WHERE (f.challenger_id = ? AND f.challenger_won = ?) OR 
        (f.challengee_id = ? AND f.challenger_won = ?) 
      ", id, true, id, false)}' 
+0

내가 이것을 실행할 때 ID가 로컬 변수 또는 메서드가 정의되지 않았다는 것을 말하는 것입니다 – keruilin

+0

대답을 다시 시도하십시오. –