diff options
author | Rhenium <rhenium@rhe.jp> | 2014-02-22 00:22:08 +0900 |
---|---|---|
committer | Rhenium <rhenium@rhe.jp> | 2014-02-22 00:22:08 +0900 |
commit | 19365a56a929b0b09dddc6d1fb46cdd7cad13eda (patch) | |
tree | a4e642ec3d36bb03d3ce1e3729aa1aa6016781f0 /app | |
parent | 24972568be32e9b32126e10434b503da3dad76f6 (diff) | |
download | aclog-19365a56a929b0b09dddc6d1fb46cdd7cad13eda.tar.gz |
fix SQL of tweets#user_discoveries / tweets#user_discovered_by
Diffstat (limited to 'app')
-rw-r--r-- | app/api/api_tweets.rb | 4 | ||||
-rw-r--r-- | app/controllers/tweets_controller.rb | 12 | ||||
-rw-r--r-- | app/models/tweet.rb | 6 |
3 files changed, 11 insertions, 11 deletions
diff --git a/app/api/api_tweets.rb b/app/api/api_tweets.rb index 168fef3..8cd95b8 100644 --- a/app/api/api_tweets.rb +++ b/app/api/api_tweets.rb @@ -95,7 +95,7 @@ class ApiTweets < Grape::API desc "Returns the Tweets which a user specified by username or user ID discovered.", example_params: { user_id: 120726371, count: 2 } params_user[] - params_pagination_with_ids[] + params_pagination[] get "user_discoveries", rabl: "tweets" do @tweets = paginate_with_ids(Tweet).discovered_by(user).order_by_id end @@ -103,7 +103,7 @@ class ApiTweets < Grape::API desc "Returns the specified user's Tweets which another specified user discovered.", example_params: { user_id: 120726371, count: 2, source_screen_name: "cn" } params_user[] params_source_user[] - params_pagination_with_ids[] + params_pagination[] get "user_discovered_by", rabl: "tweets" do @tweets = paginate_with_ids(user.tweets).discovered_by(source_user).order_by_id end diff --git a/app/controllers/tweets_controller.rb b/app/controllers/tweets_controller.rb index 95ee65c..4dd6dd9 100644 --- a/app/controllers/tweets_controller.rb +++ b/app/controllers/tweets_controller.rb @@ -40,7 +40,7 @@ class TweetsController < ApplicationController def user_discoveries @user = require_user authorize_to_show_user! @user - @tweets = paginate(Tweet).discovered_by(@user).order_by_id + @tweets = paginate_with_page_number(Tweet).discovered_by(@user).order_by_id end def user_discovered_by @@ -48,7 +48,7 @@ class TweetsController < ApplicationController authorize_to_show_user! @user @source_user = User.find(id: params[:source_user_id], screen_name: params[:source_screen_name]) authorize_to_show_user! @source_user - @tweets = paginate(@user.tweets).discovered_by(@source_user).order_by_id + @tweets = paginate_with_page_number(@user.tweets).discovered_by(@source_user).order_by_id end def all_best @@ -96,15 +96,13 @@ class TweetsController < ApplicationController end def render(*args) - if @tweets + if @tweets && @tweets.length > 0 if @page @prev_url = @page == 1 ? nil : url_for(params.merge(page: @page - 1)) @next_url = url_for(params.merge(page: @page + 1)) else - if @tweets.length > 0 - @prev_url = url_for(params.tap {|h| h.delete(:max_id) }.merge(since_id: @tweets.first.id)) - @next_url = url_for(params.tap {|h| h.delete(:since_id) }.merge(max_id: @tweets.last.id - 1)) - end + @prev_url = url_for(params.tap {|h| h.delete(:max_id) }.merge(since_id: @tweets.first.id)) + @next_url = url_for(params.tap {|h| h.delete(:since_id) }.merge(max_id: @tweets.last.id - 1)) end end diff --git a/app/models/tweet.rb b/app/models/tweet.rb index e0cb347..b3da0dd 100644 --- a/app/models/tweet.rb +++ b/app/models/tweet.rb @@ -28,9 +28,11 @@ class Tweet < ActiveRecord::Base load_count = all.limit_value.to_i + all.offset_value.to_i load_count = nil if load_count == 0 - un = [:favorites, :retweets].map {|m| joins(m).where(m => { user: user }).order(id: :desc).limit(load_count).to_sql }.map {|m| "(#{m})" }.join(" UNION ") + un = [:favorites, :retweets].map {|m| + user.__send__(m).select(:tweet_id).order(tweet_id: :desc).limit(load_count) + }.map {|m| "(#{m.to_sql})" }.join(" UNION ") - from("(#{un}) AS tweets") + joins("INNER JOIN ((#{un})) reactions ON reactions.tweet_id = tweets.id") } def twitter_url |