2015-12-09 2 views
13

У меня есть модель публикации и комментариев. В одном посте есть много комментариев, и один комментарий принадлежит сообщению.Как получить ассоциацию "принадлежит_to" с Ecto в Elixir?

При показе отдельного комментария, как я могу получить доступ к сообщению, которому он принадлежит?

т.е. в Ruby On Rails вы могли бы сделать:

@comment = Comment.find(params[:id]) 
@post = @comment.post 

Как я мог достичь этого с помощью рамки Phoenix Elixir? Я считаю, что мои ассоциации моделей настроены правильно, но я смущен тем, как реально получить этот запрос в представлении или контроллере.

ответ

20

Если вы читаете документы Ecto.Schema, вы увидите, как создать ассоциацию belongs_to/3.

defmodule MyApp.Comment do 
    use MyApp.Model 

    schema "comments" do 
    belongs_to :post, MyApp.Post 
    end 
end 

С ассоциацией создан вы можете использовать Repo.preload/2 для извлечения Assocation.

Repo.preload(comment, :post).post 

Вы также можете предварительно загрузить в запросе, если вы не принес ресурс с Ecto.Query.preload/3

+0

Awesome, спасибо так много. –