2017-06-22 4 views
0

J'ai trois modèles qui sont semblables à ceObtenez tous les commentaires pour l'auteur. Secondaires se joindre à l'aide de modèles Ecto

schema "Author" do 
    has_many :posts, Repo.Post 
end 

schema "Post" do 
    has_many :comments Repo.Post 
    belongs_to :author, Repo.Author 
end 

schema "Comment" do 
    belongs_to :post, Repo.Post 
end 

comment puis-je créer un champ ou une méthode pour auteur pour afficher tous les commentaires? Essentiellement une jointure secondaire. Je dois pouvoir exposer cela à un schéma d'absinthe en quelque sorte.

Répondre

1

Utilisez has_many :through

schema "Author" do 
    has_many :posts, Repo.Post 
    has_many :comments, through: [:posts, :comments] 
end 
+0

Je suis un 'aucune correspondance de la valeur à droite:% Ecto.Association.HasThrough' Je pense que contrairement à l'exemple dans le lien que vous avez fourni, mon' posts' (table secondaire) n'appartiennent pas à 'comments'. En d'autres termes, ils n'ont pas de "comment_id". – ssomnoremac