diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-07-30 14:46:07 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-07-30 14:46:07 +0900 |
commit | bf998e665da90e5597b4b00ed7f34e6333733302 (patch) | |
tree | 72f3c63736275b4e2413bf0ed81bc3b1e5907813 /app/models | |
parent | f6708ffa6da47c0ad7165561de24ab123b4198cb (diff) | |
download | aclog-bf998e665da90e5597b4b00ed7f34e6333733302.tar.gz |
web: users#stats: use 100% stacked chart
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/user.rb | 26 |
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 |