HAS_MANY, принадлежит к ассоциации, где ассоциированная модель HAS_MANY имеет два псевдонима fk в принадлежащих_to insnown_model
-
28-09-2019 - |
Вопрос
У меня есть модель пользователя, которая имеет много боев. Борьба принадлежит пользователю.
В таблице боя есть два иностранных ключей, которые ссылаются на пользователя 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
Не связан с StackOverflow