ассоциация has_many ... идентификатор класса не найден - PullRequest
0 голосов
/ 20 июня 2010

Как я могу написать приведенный ниже код, чтобы он передавал user.id. Учитывая то, что у меня есть, выдает Class id not found error. (У пользователя много боев. И бой принадлежит пользователю. Пользователь может быть либо соперником в борьбе, либо претендентом в другом.)

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]

1 Ответ

0 голосов
/ 20 июня 2010

Вы можете использовать опцию 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)}'
...