From b0243fbe67ca3a8b8b4d738bffd8e629674fe21a Mon Sep 17 00:00:00 2001 From: hogemax Date: Thu, 8 Mar 2018 21:18:02 +0900 Subject: [PATCH] Finish user following --- app/controllers/static_pages_controller.rb | 2 +- app/models/micropost.rb | 11 +++++++++++ app/models/user.rb | 3 ++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/controllers/static_pages_controller.rb b/app/controllers/static_pages_controller.rb index fbdc3a4..7e0a797 100644 --- a/app/controllers/static_pages_controller.rb +++ b/app/controllers/static_pages_controller.rb @@ -1,7 +1,7 @@ class StaticPagesController < ApplicationController def home if signed_in? - @micropost = current_user.microposts.build if signed_in? + @micropost = current_user.microposts.build #@feed_items = current_user.feed.paginate(:page => params[:page]) @feed_items = current_user.feed.paginate(page: params[:page]) end diff --git a/app/models/micropost.rb b/app/models/micropost.rb index e769c49..86fdcea 100644 --- a/app/models/micropost.rb +++ b/app/models/micropost.rb @@ -3,4 +3,15 @@ class Micropost < ActiveRecord::Base default_scope -> { order('created_at DESC') } validates :content, presence: true, length: { maximum: 140 } validates :user_id, presence: true + + def self.from_users_followed_by(user) + #followed_user_ids = user.followed_user_ids + #where("user_id IN (?) OR user_id = ?", followed_user_ids, user) + #where("user_id IN (:followed_user_ids) OR user_id = :user_id", + # followed_user_ids: followed_user_ids, user_id: user) + followed_user_ids = "SELECT followed_id FROM relationships + WHERE follower_id = :user_id" + where("user_id IN (#{followed_user_ids}) OR user_id = :user_id", + user_id: user.id) + end end diff --git a/app/models/user.rb b/app/models/user.rb index a058100..f46a66d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -10,7 +10,8 @@ class User < ActiveRecord::Base has_many :followers, through: :reverse_relationships, source: :follower def feed - Micropost.where("user_id = ?", id) + # Micropost.where("user_id = ?", id) + Micropost.from_users_followed_by(self) end def following?(other_user)