凤凰框架 1.0.2
我有一个user_post_path()
,因为我正在制作Users
has_many
Posts
.
在我的帖子控制器中,我这样做:
def show(conn, %{"id" => id, "user_id" => user_id}) do
post = Post |> Repo.get!(id)
user = User |> Repo.get!(user_id)
render(conn, :index, post: post, user: user)
end
在我的post/show.html
我有:
<%= link "Edit", to: user_post_path(@conn, :edit, @user, @post) %>
第一个问题,写2个查询效率低吗?IE。
Repo.get!(id)
和Repo.get!(user_id)
或者写这样的东西更有效:
user_with_post = User |> Repo.get!(user_id) |> Repo.preload [:posts] |> #now do something to get posts.id = 5 for example
我认为编写一个查询更有效,(如果我错了,请纠正我!),这导致我的第二个问题。
一旦我预加载了帖子,我就不能仅仅Repo.get(post_id)
因为我得到“不可查询”的错误。过滤用户帖子的正确方法是什么,以便我只获取具有我想要的特定帖子 ID/ID 的用户详细信息?