diff options
-rw-r--r-- | app/api/api_users.rb | 4 | ||||
-rw-r--r-- | app/controllers/users_controller.rb | 8 | ||||
-rw-r--r-- | app/models/user.rb | 8 |
3 files changed, 12 insertions, 8 deletions
diff --git a/app/api/api_users.rb b/app/api/api_users.rb index a1f4139..5b4630a 100644 --- a/app/api/api_users.rb +++ b/app/api/api_users.rb @@ -26,13 +26,13 @@ class ApiUsers < Grape::API desc "Returns the list of the users who discovered the Tweets of a user, specified by username or user ID.", example_params: { id: 15926668 } params_user[] get "discovered_by", rabl: "user_discovered_by_and_users" do - @result = user.count_discovered_by.sort_by {|user_id, count| -count } + @result = user.count_discovered_by end desc "Returns the list of the users discovered by a user, specified by username or user ID.", example_params: { screen_name: "toshi_a" } params_user[] get "discovered_users", rabl: "user_discovered_by_and_users" do - @result = user.count_discovered_users.sort_by {|user_id, count| -count } + @result = user.count_discovered_users end desc "", nodoc: true, example_params: { ids: "280414022,99008565" } diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 336defc..8c0e58e 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -6,15 +6,15 @@ class UsersController < ApplicationController def discovered_by @user = require_user authorize_to_show_user_best! @user - @result = @user.count_discovered_by.sort_by {|user_id, count| -count }.take(Settings.users.count) - @cached_users = Hash[User.find(@result.map {|user_id, count| user_id }).map {|user| [user.id, user] }] + @result = @user.count_discovered_by.take(Settings.users.count) + @cached_users = User.find(@result.map(&:first)).map {|user| [user.id, user] }.to_h end def discovered_users @user = require_user authorize_to_show_user_best! @user - @result = @user.count_discovered_users.sort_by {|user_id, count| -count }.take(Settings.users.count) - @cached_users = Hash[User.find(@result.map {|user_id, count| user_id }).map {|user| [user.id, user] }] + @result = @user.count_discovered_users.take(Settings.users.count) + @cached_users = User.find(@result.map(&:first)).map {|user| [user.id, user] }.to_h end def user_jump_suggest diff --git a/app/models/user.rb b/app/models/user.rb index 15dfcfb..8b3e730 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -96,7 +96,9 @@ class User < ActiveRecord::Base .joins("INNER JOIN (#{self.tweets.reacted.order_by_id.limit(100).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 } } + }.inject { |m, s| + m.merge(s) { |key, first, second| first.to_i + second.to_i } + }.sort_by { |user_id, count| -count } end def count_discovered_users @@ -105,6 +107,8 @@ class User < ActiveRecord::Base .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 } } + }.inject { |m, s| + m.merge(s) { |key, first, second| first.to_i + second.to_i } + }.sort_by { |user_id, count| -count } end end |