aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRhenium <rhenium@rhe.jp>2014-02-21 16:32:57 +0900
committerRhenium <rhenium@rhe.jp>2014-02-21 16:32:57 +0900
commit6fceb087af629e7723c51607eb89db345c20eccb (patch)
tree73b1c172f21264fe04f5119d8a8b07d7437ed1c1
parented505e5e31da82c0f3f293cd8e66ef8b2664195d (diff)
downloadaclog-6fceb087af629e7723c51607eb89db345c20eccb.tar.gz
fix tweets#user_discovered_by
-rw-r--r--app/controllers/tweets_controller.rb14
-rw-r--r--app/models/tweet.rb5
-rw-r--r--app/views/users/discovered_by.html.haml2
-rw-r--r--app/views/users/discovered_users.html.haml2
-rw-r--r--config/routes.rb2
5 files changed, 7 insertions, 18 deletions
diff --git a/app/controllers/tweets_controller.rb b/app/controllers/tweets_controller.rb
index c6daedc..95ee65c 100644
--- a/app/controllers/tweets_controller.rb
+++ b/app/controllers/tweets_controller.rb
@@ -43,22 +43,10 @@ class TweetsController < ApplicationController
@tweets = paginate(Tweet).discovered_by(@user).order_by_id
end
- def user_favorites
- @user = require_user
- authorize_to_show_user! @user
- @tweets = paginate(Tweet).favorited_by(@user).order_by_id
- end
-
- def user_retweets
- @user = require_user
- authorize_to_show_user! @user
- @tweets = paginate(Tweet).retweeted_by(@user).order_by_id
- end
-
def user_discovered_by
@user = require_user
authorize_to_show_user! @user
- @source_user = User.find(id: params[:user_id_b], screen_name: params[:screen_name_b])
+ @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
end
diff --git a/app/models/tweet.rb b/app/models/tweet.rb
index a89288c..e0cb347 100644
--- a/app/models/tweet.rb
+++ b/app/models/tweet.rb
@@ -27,9 +27,10 @@ class Tweet < ActiveRecord::Base
scope :discovered_by, -> user {
load_count = all.limit_value.to_i + all.offset_value.to_i
load_count = nil if load_count == 0
- un = [:favorites, :retweets].map {|m| user.__send__(m).select(:tweet_id).order(tweet_id: :desc).limit(load_count).to_sql }.join(") UNION (")
- joins("INNER JOIN ((#{un})) reactions ON reactions.tweet_id = tweets.id")
+ un = [:favorites, :retweets].map {|m| joins(m).where(m => { user: user }).order(id: :desc).limit(load_count).to_sql }.map {|m| "(#{m})" }.join(" UNION ")
+
+ from("(#{un}) AS tweets")
}
def twitter_url
diff --git a/app/views/users/discovered_by.html.haml b/app/views/users/discovered_by.html.haml
index 88ad860..84e6007 100644
--- a/app/views/users/discovered_by.html.haml
+++ b/app/views/users/discovered_by.html.haml
@@ -10,6 +10,6 @@
- @result.each do |user_id, *counts|
- user = @cached_users[user_id]
%li
- %a{href: user_discovered_by_user_path(screen_name: @user.screen_name, screen_name_b: user.screen_name), title: "#{user.name} (@#{user.screen_name})"}
+ %a{href: user_discovered_by_user_path(screen_name: @user.screen_name, source_screen_name: user.screen_name), title: "#{user.name} (@#{user.screen_name})"}
= image_tag user.profile_image_url, alt: "@" + user.screen_name
%span= counts.sum
diff --git a/app/views/users/discovered_users.html.haml b/app/views/users/discovered_users.html.haml
index 310d55c..ec6ac44 100644
--- a/app/views/users/discovered_users.html.haml
+++ b/app/views/users/discovered_users.html.haml
@@ -10,6 +10,6 @@
- @result.each do |user_id, *counts|
- user = @cached_users[user_id]
%li
- %a{href: user_discovered_by_user_path(screen_name: user.screen_name, screen_name_b: @user.screen_name), title: "#{user.name} (@#{user.screen_name})"}
+ %a{href: user_discovered_by_user_path(screen_name: user.screen_name, source_screen_name: @user.screen_name), title: "#{user.name} (@#{user.screen_name})"}
= image_tag user.profile_image_url, alt: "@" + user.screen_name
%span= counts.sum
diff --git a/config/routes.rb b/config/routes.rb
index b6bfb7b..bb1f587 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -32,7 +32,7 @@ Aclog::Application.routes.draw do
get "/discoveries" => "tweets#user_discoveries", as: "user_discoveries"
get "/favorites" => "tweets#user_favorites", as: "user_favorites"
get "/retweets" => "tweets#user_retweets", as: "user_retweets"
- get "/discovered_by/:screen_name_b" => "tweets#user_discovered_by", as: "user_discovered_by_user"
+ get "/discovered_by/:source_screen_name" => "tweets#user_discovered_by", as: "user_discovered_by_user"
get "/discovered_by" => "users#discovered_by", as: "user_discovered_by"
get "/discovered_users" => "users#discovered_users", as: "user_discovered_users"