我是ruby的新手,所以我的问题是在用户创建、更新和删除之后我会尝试发送一封电子邮件。
它适用于创建和更新,我确实收到了确认的电子邮件,但它不适用于destroy
,可能是因为我没有正确使用回调before_destroy
。
我的模型user.rb
:
class User < ApplicationRecord
after_create :welcome_send
before_destroy :goodbye_user, prepend: true
after_update :update_user
def welcome_send
UserMailer.welcome_email(self).deliver_now
end
def goodbye_user
UserMailer.bye_email(self).deliver_now
end
def update_user
UserMailer.update_info(self).deliver_now
end
end
我的user_mailer
是:
class UserMailer < ApplicationMailer
default from: 'no-reply@monsite.fr'
def welcome_email(user)
@user = user
@url = 'http://monsite.fr/login'
mail(to: @user.email, subject: 'Bienvenue dans la team !')
end
def bye_email(user)
@user = user
mail(to: @user.email, subject: 'A bientôt !')
end
def update_info(user)
@user = user
@url = 'http://monsite.fr/login'
mail(to: @user.email, subject: 'Modification de vos paramètres')
end
end
发布于 2019-03-13 17:32:44
正如@konstantin-strukov建议的那样,你应该避免使用回调,特别是在发送电子邮件时。您超出了模型在MVC中应该做的事情的范围,即与数据库交互。
您可以在控制器中移动它,例如:
class UsersController < ApplicationController
...
def destroy
UserMailer.bye_email(@user).deliver_now
@user.destroy!
redirect_to ...
end
end
发布于 2019-03-13 01:57:45
我认为失败的是你的delete方法,而不是你的回调。只需尝试将其替换为“destroy”,它应该可以正常工作。
https://stackoverflow.com/questions/55127567
复制相似问题