From 5af2b8f21681bfc7e582a05a72b3e95b6130b040 Mon Sep 17 00:00:00 2001 From: Connor Turland Date: Fri, 8 Sep 2017 13:17:42 -0400 Subject: [PATCH] add active scope to follows model --- app/models/follow.rb | 6 +++++- app/models/user.rb | 4 ++-- app/services/follow_service.rb | 4 ++-- app/services/notification_service.rb | 3 +-- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/models/follow.rb b/app/models/follow.rb index 70ff6188..cf1d5f17 100644 --- a/app/models/follow.rb +++ b/app/models/follow.rb @@ -10,7 +10,11 @@ class Follow < ApplicationRecord validates :user, uniqueness: { scope: :followed, message: 'This entity is already followed by this user' } after_create :add_subsetting - + + scope :active, -> { + where(muted: false) + } + private def add_subsetting diff --git a/app/models/user.rb b/app/models/user.rb index feac3d08..d9e25cad 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -58,8 +58,8 @@ class User < ApplicationRecord admin: admin } if (_options[:follows]) json['follows'] = { - topics: following.where(muted: false, followed_type: 'Topic').to_a.map(&:followed_id), - maps: following.where(muted: false, followed_type: 'Map').to_a.map(&:followed_id) + topics: following.active.where(followed_type: 'Topic').to_a.map(&:followed_id), + maps: following.active.where(followed_type: 'Map').to_a.map(&:followed_id) } end if (_options[:follow_settings]) diff --git a/app/services/follow_service.rb b/app/services/follow_service.rb index be70cf84..484fc8ad 100644 --- a/app/services/follow_service.rb +++ b/app/services/follow_service.rb @@ -8,7 +8,7 @@ class FollowService return if (reason == 'created' || reason == 'contributed') && !should_auto_follow(entity, user, reason) follow = Follow.where(followed: entity, user: user).first_or_create - follow.update_attribute('muted', false) + follow.update(muted: false) if FollowReason::REASONS.include?(reason) && !follow.follow_reason.read_attribute(reason) follow.follow_reason.update_attribute(reason, true) end @@ -16,7 +16,7 @@ class FollowService def unfollow(entity, user) follow = Follow.where(followed: entity, user: user).first - follow.update_attribute('muted', true) + follow.update(muted: true) end def remove_reason(entity, user, reason) diff --git a/app/services/notification_service.rb b/app/services/notification_service.rb index ba1203b8..7d7f0512 100644 --- a/app/services/notification_service.rb +++ b/app/services/notification_service.rb @@ -53,8 +53,7 @@ class NotificationService end def self.notify_followers(entity, event_type, event, reason_filter = nil, exclude_follows = nil) - follows = entity.follows.where.not(user_id: event.user.id) - follows = follows.where(muted: false) + follows = entity.follows.active.where.not(user_id: event.user.id) if !exclude_follows.nil? follows = follows.where.not(id: exclude_follows)