我有一个帖子网格,用户可以喜欢或不同于N + 1查询。
我正在渲染部分内容的帖子集合:
<%= post.title %>
<% if current_user.liking?(post) %>
<%= render partial: 'posts/unlike' %>
<% else %>
<%= render partial: 'posts/like' %>
<% end %>
...
用户控制器:
def show
@user = User.find(params[:id])
@feed = @user.posts.paginate(page: params[:page])
end
这会导致每个帖子都有一个查询。我虽然使用.include(:likes),但我不知道怎么做'current_user'
修改
我最终为属于current_user
的喜欢创建了第二个查询@liking_items = @feed.includes(:likes).where(likes: { user_id: current_user })
答案 0 :(得分:1)
由于您拥有current_user
,因此您只需添加一个位置:
@user.post.includes(:likes).where(likes: { user_id: current_user })
(我假设&#34;喜欢所有者&#34;是user_id
)。