has_many, belongs_to association où le modèle associé has_many a deux alias fk dans belongs_to associated_model
-
28-09-2019 - |
Question
J'ai un modèle utilisateur qui a de nombreux combats. Combat appartient à l'utilisateur.
Il y a deux clés étrangères dans la table de combat qui de retour de référence au PK utilisateur -. Challenger_id et challengee_id
L'astuce est de savoir comment puis-je écrire l'association has_many sur le modèle de l'utilisateur afin qu'il retourne des combats où user_id = challenger_id ou challengee_id?
La solution
Je crois que vous devriez utiliser deux associations séparées et de créer une méthode pour revenir tous les combats. Est-il pas un jour possible, vous aurez besoin pour que le fights
où certains @user
était le challenger
?
Je ferais cela comme suit:
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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow