bug fixes for user_stat extraction, decrease querying

This commit is contained in:
Sam 2013-10-04 18:06:32 +10:00
parent e18b93026a
commit 094b5eccca
6 changed files with 22 additions and 13 deletions

View File

@ -315,7 +315,7 @@ class TopicsController < ApplicationController
end end
def should_track_visit_to_topic? def should_track_visit_to_topic?
(!request.xhr? || params[:track_visit]) && current_user !!((!request.xhr? || params[:track_visit]) && current_user)
end end
def perform_show_response def perform_show_response

View File

@ -11,7 +11,7 @@ class InvitedList
@by_user = user @by_user = user
invited = Invite.where(invited_by_id: @by_user.id) invited = Invite.where(invited_by_id: @by_user.id)
.includes(:user) .includes(:user => :user_stat)
.order(:redeemed_at) .order(:redeemed_at)
invited.each do |i| invited.each do |i|
if i.redeemed? if i.redeemed?

View File

@ -8,8 +8,19 @@ class InvitedUserSerializer < BasicUserSerializer
:days_since_created :days_since_created
def time_read def time_read
return nil if object.time_read.blank? AgeWords.age_words(object.user_stat.time_read)
AgeWords.age_words(object.time_read) end
def days_visited
object.user_stat.days_visited
end
def topics_entered
object.user_stat.topics_entered
end
def posts_read_count
object.user_stat.posts_read_count
end end
def days_since_created def days_since_created

View File

@ -13,7 +13,7 @@ module PostStreamSerializerMixin
return @posts if @posts.present? return @posts if @posts.present?
@posts = [] @posts = []
@highest_number_in_posts = 0 @highest_number_in_posts = 0
if object.posts.present? if object.posts
object.posts.each_with_index do |p, idx| object.posts.each_with_index do |p, idx|
@highest_number_in_posts = p.post_number if p.post_number > @highest_number_in_posts @highest_number_in_posts = p.post_number if p.post_number > @highest_number_in_posts
ps = PostSerializer.new(p, scope: scope, root: false) ps = PostSerializer.new(p, scope: scope, root: false)

View File

@ -8,7 +8,7 @@ class MoveColumnsToUserStats < ActiveRecord::Migration
add_column :user_stats, :likes_received, :integer, default: 0, null: false add_column :user_stats, :likes_received, :integer, default: 0, null: false
add_column :user_stats, :topic_reply_count, :integer, default: 0, null: false add_column :user_stats, :topic_reply_count, :integer, default: 0, null: false
execute 'UPDATE user_stats execute 'UPDATE user_stats s
SET topics_entered = u.topics_entered, SET topics_entered = u.topics_entered,
time_read = u.time_read, time_read = u.time_read,
days_visited = u.days_visited, days_visited = u.days_visited,
@ -16,8 +16,7 @@ class MoveColumnsToUserStats < ActiveRecord::Migration
likes_given = u.likes_given, likes_given = u.likes_given,
likes_received = u.likes_received, likes_received = u.likes_received,
topic_reply_count = u.topic_reply_count topic_reply_count = u.topic_reply_count
FROM user_stats s FROM users u WHERE u.id = s.user_id
JOIN users u on u.id = s.user_id
' '
remove_column :users, :topics_entered remove_column :users, :topics_entered
@ -38,7 +37,7 @@ class MoveColumnsToUserStats < ActiveRecord::Migration
add_column :users, :likes_received, :integer add_column :users, :likes_received, :integer
add_column :users, :topic_reply_count, :integer add_column :users, :topic_reply_count, :integer
execute 'UPDATE users execute 'UPDATE users s
SET topics_entered = u.topics_entered, SET topics_entered = u.topics_entered,
time_read = u.time_read, time_read = u.time_read,
days_visited = u.days_visited, days_visited = u.days_visited,
@ -46,8 +45,7 @@ class MoveColumnsToUserStats < ActiveRecord::Migration
likes_given = u.likes_given, likes_given = u.likes_given,
likes_received = u.likes_received, likes_received = u.likes_received,
topic_reply_count = u.topic_reply_count topic_reply_count = u.topic_reply_count
FROM users s FROM user_stats u WHERE s.id = u.user_id
JOIN user_stats u on s.id = u.user_id
' '
remove_column :user_stats, :topics_entered remove_column :user_stats, :topics_entered

View File

@ -214,7 +214,7 @@ class TopicView
return result unless @user.present? return result unless @user.present?
return result unless topic_user.present? return result unless topic_user.present?
post_numbers = PostTiming.select(:post_number) post_numbers = PostTiming
.where(topic_id: @topic.id, user_id: @user.id) .where(topic_id: @topic.id, user_id: @user.id)
.where(post_number: current_post_ids) .where(post_number: current_post_ids)
.pluck(:post_number) .pluck(:post_number)