Ich habe ein Raster von Posts, wo ein Benutzer N + 1 Abfragen mögen oder nicht mögen kann.Rails 4 bedingte Render-Ursache N + 1 Abfrage
Ich bin Rendering eine Sammlung von Post, die teilweise die hat:
<%= post.title %>
<% if current_user.liking?(post) %>
<%= render partial: 'posts/unlike' %>
<% else %>
<%= render partial: 'posts/like' %>
<% end %>
...
Controller-Benutzer:
def show
@user = User.find(params[:id])
@feed = @user.posts.paginate(page: params[:page])
end
Dies wird für jede Stelle eine Abfrage verursacht. Ich mit .include obwohl (: gefällt), aber ich weiß nicht, wie es zu tun für ‚current_user‘
Edit:
ich eine zweite Abfrage für Gleichen, das ist die Schaffung endete gehören current_user
@liking_items = @feed.includes(:likes).where(likes: { user_id: current_user })
@user ist derjenige, der gepostet hat und current_user ist der eingeloggte Benutzer, der einen Beitrag mögen oder nicht mögen kann. Wie kannst du das meiner Meinung nach weitergeben? –
Sie müssen nur die Beiträge filtern und dann an die Ansicht übergeben, wie Sie es tun. – dpedoneze
Ich vermute, Sie Abfrage ist falsch, weil es Post, die user_id hat: current_user und das ist nicht der Anwendungsfall. Ich brauche Likes mit user_id: current_user –