Tym razem ugrzązłem na dobre i bez waszej pomocy chyba nie ruszę z miejsca. Mam dwa modele połączone relacjami:
[code=ruby]class Player < ActiveRecord::Base
has_many :black_games, :class_name=>‘Game’, :foreign_key=>‘black_id’
has_many :white_games, :class_name=>‘Game’, :foreign_key=>‘white_id’
(…)
class Game < ActiveRecord::Base
belongs_to :black, :class_name=>‘Player’
belongs_to :white, :class_name=>‘Player’
(…)[/code]
Na pierwszy rzut oka wygląda OK i dla gier granych czarnymi jest wszystko cacy. Ale dla przy zapytaniu o gry grane białymi …
player=Player.find(4)
bg = player.black_games(:conditions=>{:accepted=>true})
wg = player.white_games(:conditions=>{:accepted=>true})
(z logów)
SELECT * FROM `games` WHERE (`games`.black_id = 4 AND (`games`.`accepted` = 1))
SELECT * FROM `games` WHERE (`games`.white_id = 4 AND (`games`.black_id = 4 AND (`games`.`accepted` = 1)))
To oczywiście jest bzdura bo nie ma gier, które gracz rozgrywałby z samym sobą.
Jak sobie z tym poradzić?