0

如何编写下面的代码以便它传递 user.id。鉴于我所拥有的,它会抛出 Class id not found 错误。(用户有很多战斗。战斗属于用户。用户可以是战斗中的挑战者,也可以是另一个挑战者。)

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 回答