HAS_MANY, принадлежит к ассоциации, где ассоциированная модель HAS_MANY имеет два псевдонима fk в принадлежащих_to insnown_model

StackOverflow https://stackoverflow.com/questions/3075228

Вопрос

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

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

Трюк - это то, как я могу написать ассоциацию HAS_MANY на модели пользователя, чтобы она возвращала бои, где user_id = chansenger_id или challengee_id?

Это было полезно?

Решение

Я считаю, что вы должны использовать две разделенные ассоциации и создать метод для возврата всех боев. Не возможно, когда-нибудь вы должны получить только 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top