aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRhenium <rhenium@rhe.jp>2014-02-22 00:22:08 +0900
committerRhenium <rhenium@rhe.jp>2014-02-22 00:22:08 +0900
commit19365a56a929b0b09dddc6d1fb46cdd7cad13eda (patch)
treea4e642ec3d36bb03d3ce1e3729aa1aa6016781f0
parent24972568be32e9b32126e10434b503da3dad76f6 (diff)
downloadaclog-19365a56a929b0b09dddc6d1fb46cdd7cad13eda.tar.gz
fix SQL of tweets#user_discoveries / tweets#user_discovered_by
-rw-r--r--app/api/api_tweets.rb4
-rw-r--r--app/controllers/tweets_controller.rb12
-rw-r--r--app/models/tweet.rb6
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