У меня есть модель матча (матч, т.е. матч по теннису или пинг-понгу). В нем участвуют 2 игрока (player1, player2), и я бы хотел, чтобы мои user.matches возвращали экземпляры пользователя для player1 и player2.
У меня есть система, как показано ниже, но она кажется неуклюжей и неинтуитивной:
ПОЛЬЗОВАТЕЛЬСКАЯ МОДЕЛЬ:
has_many :matches, :foreign_key => "player1_id"
has_many :reverse_matches, :foreign_key => "player2_id", :class_name => "Match"
СООТВЕТСТВУЮЩАЯ МОДЕЛЬ:
belongs_to :player1, :foreign_key => "player1_id", :class_name => "User"
belongs_to :player2, :foreign_key => "player2_id", :class_name => "User"
Я также открыт для предложений о том, как я структурирую модель (например, если столбцы player1/player2 не подходят).
Просто помните, что каждый матч должен принадлежать 2 и только 2 игрокам.