投稿とコメントのモデルがあります。 1つの投稿には多くのコメントがあり、1つのコメントは投稿に属しています。
個別のコメントを表示する場合、それが属する投稿にアクセスするにはどうすればよいですか?
つまり、Ruby on Railsでできること:
@comment = Comment.find(params[:id])
@post = @comment.post
Phoenix Elixirフレームワークを使用してこれをどのように達成できますか?モデルの関連付けが適切に設定されていると思いますが、ビューまたはコントローラーのいずれかでこのクエリを実際に取得する方法について混乱しています。
Ecto.Schema のドキュメントを読むと、 belongs_to/ の関連付けを作成する方法がわかります。
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/ でリソースをフェッチしていない場合は、クエリをプリロードすることもできます。