diff --git a/app/models/user.rb b/app/models/user.rb index 15abd8e..21e8ad2 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -14,4 +14,8 @@ class User < ApplicationRecord has_many :user_follows_followers, class_name: 'UserFollow', foreign_key: :followed_id has_many :following, through: :user_follows_following, source: :followed has_many :followers, through: :user_follows_followers, source: :follower + + def is_following?(user) + user_follows_following.where(followed_id: user&.id).exists? + end end diff --git a/app/views/users/_user.json.jbuilder b/app/views/users/_user.json.jbuilder index 96813bf..dc16e88 100644 --- a/app/views/users/_user.json.jbuilder +++ b/app/views/users/_user.json.jbuilder @@ -3,5 +3,6 @@ json.joined_at user.created_at.strftime("%B %d, %Y") json.following_count user.following.count json.follower_count user.followers.count json.posts_count user.posts.count +json.is_following user.is_following?(@current_user) json.url user_url(user, format: :json) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index ec1c9b3..f2be27f 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -61,4 +61,21 @@ RSpec.describe User, type: :model do end end end + + describe '#is_following?' do + it do + following_user = create(:user) + now_following_user = create(:user) + followed_user = create(:user) + + create(:user_follow, follower_id: following_user.id, followed_id: followed_user.id) + + expect( + following_user.is_following?(followed_user) + ).to be_truthy + expect( + now_following_user.is_following?(followed_user) + ).to be_falsey + end + end end