【发布时间】:2016-09-13 00:14:39
【问题描述】:
我有一个帖子网格,用户可以喜欢或不喜欢引起 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 })
【问题讨论】:
标签: ruby-on-rails performance caching activerecord eager-loading