aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2015-07-30 14:46:07 +0900
committerKazuki Yamaguchi <k@rhe.jp>2015-07-30 14:46:07 +0900
commitbf998e665da90e5597b4b00ed7f34e6333733302 (patch)
tree72f3c63736275b4e2413bf0ed81bc3b1e5907813 /app/models
parentf6708ffa6da47c0ad7165561de24ab123b4198cb (diff)
downloadaclog-bf998e665da90e5597b4b00ed7f34e6333733302.tar.gz
web: users#stats: use 100% stacked chart
Diffstat (limited to 'app/models')
-rw-r--r--app/models/user.rb26
1 files changed, 10 insertions, 16 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index b79e80e..3c2f010 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -96,24 +96,18 @@ class User < ActiveRecord::Base
end
def count_discovered_by
- [Favorite, Retweet].map { |klass|
- klass
- .joins("INNER JOIN (#{self.tweets.reacted.order_by_id.limit(500).to_sql}) tweets ON tweets.id = #{klass.table_name}.tweet_id")
- .group("`#{klass.table_name}`.`user_id`")
- .count("`#{klass.table_name}`.`user_id`")
- }.inject { |m, s|
- m.merge(s) { |key, first, second| first.to_i + second.to_i }
- }.sort_by { |user_id, count| -count }.to_h
+ Favorite
+ .joins("INNER JOIN (#{self.tweets.reacted.order_by_id.limit(100).to_sql}) tweets ON tweets.id = favorites.tweet_id")
+ .group("`favorites`.`user_id`")
+ .count("`favorites`.`user_id`")
+ .sort_by { |user_id, count| -count }.to_h
end
def count_discovered_users
- [Favorite, Retweet].map { |klass|
- Tweet
- .joins("INNER JOIN (#{self.__send__(klass.table_name.to_sym).order(id: :desc).limit(500).to_sql}) m ON m.tweet_id = tweets.id")
- .group("tweets.user_id")
- .count("tweets.user_id")
- }.inject { |m, s|
- m.merge(s) { |key, first, second| first.to_i + second.to_i }
- }.sort_by { |user_id, count| -count }.to_h
+ Tweet
+ .joins("INNER JOIN (#{self.favorites.order(id: :desc).limit(1000).to_sql}) m ON m.tweet_id = tweets.id")
+ .group("tweets.user_id")
+ .count("tweets.user_id")
+ .sort_by { |user_id, count| -count }.to_h
end
end