Associations de rails polymorphes (reculer?)
-
22-07-2019 - |
Question
J'ai une association de rails polymorphes plusieurs à un dans mon application rails pour un modèle "cas". Il y a beaucoup de choses qui ont des cas, donc j'accède au cas que chaque chose a en faisant 'thing_that_has_a_case.case'.
Cependant, j'essaie d'aller dans l'autre sens et je ne sais pas comment. J'ai accès à l'objet de cas, mais je veux accéder à la chose qui est en train d'être mise en casse. Les rails ont-ils un moyen de le faire? Je pouvais le faire avec un commutateur moche qui fait une recherche SQL différente pour chaque type d'objet, mais j'espérais que les rails auraient un meilleur moyen. Merci!
La solution
Vous pouvez ajouter quelque chose comme ceci à votre modèle de cas:
belongs_to :parent, :polymorphic => true
.. qui suppose que vous avez des champs parent_id
et type_parent
dans votre modèle de cas (changez le premier argument en appartient_to
en fonction de votre ont nommé ces champs d’association). Une fois que vous avez cela, vous devriez juste pouvoir faire référence à case.parent
pour une instance donnée.
Et juste pour clarifier, l'un des côtés de cette relation a quelque chose comme:
has_many :cases, :as => :parent, :dependent => :destroy
(je suppose que vous avez déjà ce travail en fonction de votre description)