1

我有一個帖子網格,用戶可以喜歡或不喜歡導致N + 1查詢。Rails 4條件呈現導致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(:喜歡),但我不知道該怎麼做了「CURRENT_USER」

編輯:

我結束了創建爲喜歡這就是第二個查詢屬於CURRENT_USER

@liking_items = @feed.includes(:likes).where(likes: { user_id: current_user }) 

回答

1

既然你有current_user,你可以再補充一個,其中:

@user.post.includes(:likes).where(likes: { user_id: current_user })

(我假設「像所有者」是user_id)。

+0

@user是發佈者,current_user是可以喜歡或不同於帖子的登錄用戶。你怎麼能通過我的觀點? –

+0

你只需要過濾這些帖子,然後將它傳遞給視圖,就像你在做什麼。 – dpedoneze

+0

我想你的查詢是錯誤的,因爲它獲得具有user_id的郵件:current_user,這不是用例。我需要喜歡有user_id:current_user –