Как получить связь "принадлежит" с Ecto в Elixir?

У меня есть модель Post и Comment. В одном посте есть много комментариев, и один комментарий принадлежит сообщению.

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

то есть. в Ruby on Rails вы можете сделать:

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

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

Ответ 1

Если вы прочитаете 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, чтобы получить ассоциацию.

Repo.preload(comment, :post).post

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