26 votes

Que signifie inverse_of dans mongoid ?

Quoi inverse_of signifie-t-il dans les associations mongoles ? Qu'est-ce que je peux obtenir en l'utilisant au lieu d'une simple association sans elle ?

42voto

XanderStrike Points 704

Dans une relation simple, deux modèles ne peuvent être liés que d'une seule manière, et le nom de la relation est automatiquement le nom du modèle auquel elle est liée. Cela convient dans la plupart des cas, mais n'est pas toujours suffisant.

inverse_of vous permet de préciser la relation à laquelle vous vous référez. Ceci est utile dans les cas où vous souhaitez utiliser des noms personnalisés pour vos relations. Par exemple :

class User
  include Mongoid::Document
  has_many :requests, class_name: "Request", inverse_of: :requester
  has_many :assignments, class_name: "Request", inverse_of: :worker
end

class Request
  include Mongoid::Document
  belongs_to :requester, class_name: "User", inverse_of: :requests
  belongs_to :worker, class_name: "User", inverse_of: :assignments
end

Dans cet exemple, les utilisateurs peuvent à la fois demander et être affectés à des tickets. Afin de représenter ces deux relations distinctes, nous devons définir deux relations sur le même modèle mais avec des noms différents. Utilisation de inverse_of permet à Mongoid de savoir que les "requêtes" vont avec "requester" et que les "assignations" vont avec "worker". L'avantage est double : nous pouvons utiliser des noms significatifs pour notre relation et nous pouvons avoir deux modèles liés de plusieurs façons. Consultez la page Relations mongoles pour des informations plus détaillées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X