在销毁用户之前发送电子邮件,Rails 5
Send email before destroy User, Rails 5
我试图在我的用户对象被销毁之前挂钩一个邮件程序。
我正在使用 Sidekiq 发送电子邮件,但是当用户被销毁时会出现此错误。
ActiveJob::DeserializationError: Error while trying to deserialize arguments: Couldn't find User with id [id]
在我的模型中我有这个:
class User < ApplicationRecord
before_destroy :goodbye_user
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable, :lockable
private
def send_devise_notification(notification, *args)
devise_mailer.send(notification, self, *args).deliver_later
end
def goodbye_user
GoodbyeUser.goodbye_user(self).deliver_later
end
end
告别用户邮件永远不会发送。
有什么想法吗?
这是因为您通过 deliver_later
异步发送电子邮件。由于它在一个单独的线程上,当工作人员获得工作时,用户已经被销毁。
您可以同步发送电子邮件,也可以不使用 before_destroy
回调。如果您想在后台发送电子邮件,只需调用您的 goodbye_user
方法并销毁那里的用户(在发送电子邮件后)。
我试图在我的用户对象被销毁之前挂钩一个邮件程序。
我正在使用 Sidekiq 发送电子邮件,但是当用户被销毁时会出现此错误。
ActiveJob::DeserializationError: Error while trying to deserialize arguments: Couldn't find User with id [id]
在我的模型中我有这个:
class User < ApplicationRecord
before_destroy :goodbye_user
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable, :lockable
private
def send_devise_notification(notification, *args)
devise_mailer.send(notification, self, *args).deliver_later
end
def goodbye_user
GoodbyeUser.goodbye_user(self).deliver_later
end
end
告别用户邮件永远不会发送。
有什么想法吗?
这是因为您通过 deliver_later
异步发送电子邮件。由于它在一个单独的线程上,当工作人员获得工作时,用户已经被销毁。
您可以同步发送电子邮件,也可以不使用 before_destroy
回调。如果您想在后台发送电子邮件,只需调用您的 goodbye_user
方法并销毁那里的用户(在发送电子邮件后)。