From 9d4af0dcd3733d43a17d3c4254c2426a2f77663f Mon Sep 17 00:00:00 2001 From: Andrew Kvalheim Date: Thu, 31 Mar 2022 17:30:50 -0700 Subject: [PATCH] Simplify `User.comment_notifiable` scope --- app/jobs/event_comment_mail_job.rb | 4 +--- app/models/comment.rb | 8 ++++---- app/models/user.rb | 2 +- spec/models/user_spec.rb | 4 ++-- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/app/jobs/event_comment_mail_job.rb b/app/jobs/event_comment_mail_job.rb index bcc46ca7..08f273b9 100644 --- a/app/jobs/event_comment_mail_job.rb +++ b/app/jobs/event_comment_mail_job.rb @@ -4,9 +4,7 @@ class EventCommentMailJob < ApplicationJob queue_as :default def perform(comment) - conference = comment.commentable.program.conference - - User.comment_notifiable(conference).each do |user| + User.comment_notifiable(comment.conference_id).each do |user| Mailbot.event_comment_mail(comment, user).deliver_now end end diff --git a/app/models/comment.rb b/app/models/comment.rb index ee1a07a8..9cc0007f 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -57,13 +57,13 @@ class Comment < ApplicationRecord commentable_str.constantize.find(commentable_id) end + def conference_id + commentable.program.conference_id + end + private def send_notification EventCommentMailJob.perform_later(self) end - - def conference_id - commentable.program.conference_id - end end diff --git a/app/models/user.rb b/app/models/user.rb index 993d4892..16d9eda4 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -37,7 +37,7 @@ class User < ApplicationRecord after_save :touch_events # add scope - scope :comment_notifiable, ->(conference) {joins(:roles).where('roles.name IN (?)', [:organizer, :cfp]).where('roles.resource_type = ? AND roles.resource_id = ?', 'Conference', conference.id)} + scope :comment_notifiable, ->(conference_id) {joins(:roles).where('roles.name IN (?)', [:organizer, :cfp]).where('roles.resource_type = ? AND roles.resource_id = ?', 'Conference', conference_id)} # scopes for user distributions scope :recent, lambda { diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 29bb59cb..21803533 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -88,11 +88,11 @@ describe User do let(:cfp_user) { create(:user, role_ids: [cfp_role.id]) } it 'includes organizer and cfp user' do - expect(User.comment_notifiable(conference)).to include(organizer, cfp_user) + expect(User.comment_notifiable(conference.id)).to include(organizer, cfp_user) end it 'excludes ordinary user' do - expect(User.comment_notifiable(conference)).not_to include(user) + expect(User.comment_notifiable(conference.id)).not_to include(user) end end