diff options
author | Rhenium <rhenium@rhe.jp> | 2014-02-21 16:32:57 +0900 |
---|---|---|
committer | Rhenium <rhenium@rhe.jp> | 2014-02-21 16:32:57 +0900 |
commit | 6fceb087af629e7723c51607eb89db345c20eccb (patch) | |
tree | 73b1c172f21264fe04f5119d8a8b07d7437ed1c1 | |
parent | ed505e5e31da82c0f3f293cd8e66ef8b2664195d (diff) | |
download | aclog-6fceb087af629e7723c51607eb89db345c20eccb.tar.gz |
fix tweets#user_discovered_by
-rw-r--r-- | app/controllers/tweets_controller.rb | 14 | ||||
-rw-r--r-- | app/models/tweet.rb | 5 | ||||
-rw-r--r-- | app/views/users/discovered_by.html.haml | 2 | ||||
-rw-r--r-- | app/views/users/discovered_users.html.haml | 2 | ||||
-rw-r--r-- | config/routes.rb | 2 |
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" |