uses author info in comment/debate cache

author is already preloaded and we avoid expensive touching methods
This commit is contained in:
Juanjo Bazán
2015-09-06 12:13:39 +02:00
parent 5b3f9e5642
commit 60089b8986
6 changed files with 8 additions and 19 deletions

View File

@@ -36,17 +36,6 @@ class User < ActiveRecord::Base
scope :officials, -> { where("official_level > 0") }
scope :for_render, -> { includes(:organization) }
after_update :touch_debates, :touch_comments
after_touch :touch_debates, :touch_comments
def touch_debates
debates.map(&:touch)
end
def touch_comments
comments.map(&:touch)
end
def self.find_for_oauth(auth, signed_in_resource = nil)
# Get the identity and user if they exist
identity = Identity.find_for_oauth(auth)

View File

@@ -1,4 +1,4 @@
<% cache [locale_and_user_status, comment, @commentable, (@comment_flags[comment.id] if @comment_flags)] do %>
<% cache [locale_and_user_status, comment, @commentable, comment.author, (@comment_flags[comment.id] if @comment_flags)] do %>
<div class="row">
<div id="<%= dom_id(comment) %>" class="comment small-12 column">

View File

@@ -1,4 +1,4 @@
<% cache [locale_and_user_status, @all_visible_comments.map(&:cache_key), @debate.comments_count, @comment_flags.to_a] do %>
<% cache [locale_and_user_status, @all_visible_comments, @all_visible_comments.map(&:author), @debate.comments_count, @comment_flags.to_a] do %>
<section class="row-full comments">
<div class="row">
<div id="comments" class="small-12 column">

View File

@@ -1,4 +1,4 @@
<% cache [locale_and_user_status, @debate, Flag.flagged?(current_user, @debate)] do %>
<% cache [locale_and_user_status, @debate, @debate.author, Flag.flagged?(current_user, @debate)] do %>
<section class="debate-show">
<div id="<%= dom_id(@debate) %>" class="row">
<div class="small-12 medium-9 column">

View File

@@ -52,18 +52,18 @@ describe Comment do
it "should expire cache when the author is hidden" do
expect { comment.user.hide }
.to change { comment.reload.updated_at }
.to change { [comment.reload.updated_at, comment.author.updated_at] }
end
it "should expire cache when the author changes" do
expect { comment.user.update(username: "Isabel") }
.to change { comment.reload.updated_at }
.to change { [comment.reload.updated_at, comment.author.updated_at] }
end
it "should expire cache when the author's organization get verified" do
create(:organization, user: comment.user)
expect { comment.user.organization.verify }
.to change { comment.reload.updated_at}
.to change { [comment.reload.updated_at, comment.author.updated_at] }
end
end
end

View File

@@ -288,13 +288,13 @@ describe Debate do
it "should expire cache when its author changes" do
expect { debate.author.update(username: "Eva") }
.to change { debate.reload.updated_at }
.to change { [debate.reload.updated_at, debate.author.updated_at] }
end
it "should expire cache when the author's organization get verified" do
create(:organization, user: debate.author)
expect { debate.author.organization.verify }
.to change { debate.reload.updated_at}
.to change { [debate.reload.updated_at, debate.author.updated_at] }
end
end