From e758c302927237fd5c9c46072e4f5bb381eb72cf Mon Sep 17 00:00:00 2001 From: Henne Vogelsang Date: Thu, 21 Apr 2016 15:08:00 +0200 Subject: [PATCH] Use ActiveJob to send conference date update mails --- app/controllers/admin/conference_controller.rb | 2 +- app/jobs/conference_date_update_mail_job.rb | 9 +++++++++ app/mailers/mailbot.rb | 14 +++++++------- 3 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 app/jobs/conference_date_update_mail_job.rb diff --git a/app/controllers/admin/conference_controller.rb b/app/controllers/admin/conference_controller.rb index 78fd68b4..def55090 100644 --- a/app/controllers/admin/conference_controller.rb +++ b/app/controllers/admin/conference_controller.rb @@ -85,7 +85,7 @@ module Admin send_mail_on_conf_update = @conference.notify_on_dates_changed? if @conference.update_attributes(conference_params) - Mailbot.conference_date_update_mail(@conference).deliver_later if send_mail_on_conf_update + ConferenceDateUpdateMailJob.perform_later(@conference) if send_mail_on_conf_update redirect_to edit_admin_conference_path(id: @conference.short_title), notice: 'Conference was successfully updated.' else diff --git a/app/jobs/conference_date_update_mail_job.rb b/app/jobs/conference_date_update_mail_job.rb new file mode 100644 index 00000000..e8eeae12 --- /dev/null +++ b/app/jobs/conference_date_update_mail_job.rb @@ -0,0 +1,9 @@ +class ConferenceDateUpdateMailJob < ActiveJob::Base + queue_as :default + + def perform(conference) + conference.subscriptions.each do |subscription| + Mailbot.conference_date_update_mail(conference, subscription.user).deliver_now + end + end +end diff --git a/app/mailers/mailbot.rb b/app/mailers/mailbot.rb index 7e5d23e8..901a70d6 100644 --- a/app/mailers/mailbot.rb +++ b/app/mailers/mailbot.rb @@ -35,13 +35,13 @@ class Mailbot < ActionMailer::Base conference.email_settings.generate_event_mail(event, conference.email_settings.confirmed_without_registration_body)) end - def conference_date_update_mail(conference) - User.joins(:subscriptions).merge(conference.subscriptions).each do |user| - build_email(conference, - user.email, - conference.email_settings.conference_dates_updated_subject, - conference.email_settings.generate_email_on_conf_updates(conference, user, conference.email_settings.conference_dates_updated_body)) - end + def conference_date_update_mail(conference, user) + mail(to: user.email, + from: conference.contact.email, + subject: conference.email_settings.conference_dates_updated_subject, + body: conference.email_settings.generate_email_on_conf_updates(conference, + user, + conference.email_settings.conference_dates_updated_body)) end def conference_registration_date_update_mail(conference)