运行 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
我已经用 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