has_many, ассоциативная принадлежность - PullRequest
1 голос
/ 19 июня 2010

У меня есть пользовательская модель, в которой много боев.Бой принадлежит пользователю.

В таблице боя есть два внешних ключа, которые ссылаются на пользователя PK - challengeer_id и challengee_id.

Хитрость заключается в том, как написать ассоциацию has_manyмодель User, так что она возвращает бои, где user_id = challengeer_id или challengee_id?

1 Ответ

1 голос
/ 19 июня 2010

Я считаю, что вы должны использовать две отдельные ассоциации и создать метод для возврата всех боев. Разве возможно, что когда-нибудь вам понадобится получить только fights, где @user было challenger?

Я бы сделал это следующим образом:

class User < ActiveRecord::Base
   has_many :fights_as_challenger, :foreign_key => :challenger_id,
      :class_name => "Fight"
   has_many :fights_as_challengee, :foreign_key => :challengee_id,
      :class_name => "Fight"

   def all_fights
      self.fights_as_challenger + self.fights_as_challengee
   end 
end
...