Как получить связь "принадлежит" с 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