运行 after_update Rails Ruby 后台回调

Run after_update callback in background in Ruby on Rails

我已经用 after_update 在模型上定义了一个回调,当日期改变时,邮件应该发送给所有用户。

现在我在测试中注意到,在 ActionMailer 发送所有邮件之前,用于更新模型的控制器不会响应任何状态。

如何将其设为后台任务?我也用 after_update_commit 进行了相同的测试,但没有成功。

class Meeting < ApplicationRecord  
  after_update :date_change_notification

  def date_change_notification
      meetings = Meeting.where(:meeting_id => self.id)
      tickets.each do |ticket|
        user = ticket.user
        begin
          notification_status = UserNotificationSubscription.find_by(:users_id => user.id, :notification_types_id => 1)
          if notification_status.nil? || notification_status.subscribed
            UserMailer.meeting_date_changed(self, user).deliver
          end
        rescue StandardError => e
        end
      end
  end

要使用 ActiveJob 在后台作业中发送电子邮件,只需更改

UserMailer.meeting_date_changed(self, user).deliver

UserMailer.meeting_date_changed(self, user).deliver_later