0

user.idを渡すように以下のコードを書くにはどうすればよいですか?私が持っているものを考えると、クラス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]
4

1 に答える 1

0

finder_sqlこのオプションは、複雑なhas_many条件に使用できます。

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)}'
于 2010-06-19T22:02:34.467 に答える