首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在rails 5中删除用户帐户(before_destroy)后发送电子邮件

在rails 5中删除用户帐户(before_destroy)后发送电子邮件
EN

Stack Overflow用户
提问于 2019-03-13 01:37:07
回答 2查看 137关注 0票数 0

我是ruby的新手,所以我的问题是在用户创建、更新和删除之后我会尝试发送一封电子邮件。

它适用于创建和更新,我确实收到了确认的电子邮件,但它不适用于destroy,可能是因为我没有正确使用回调before_destroy

我的模型user.rb

代码语言:javascript
运行
复制
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是:

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

发布于 2019-03-13 17:32:44

正如@konstantin-strukov建议的那样,你应该避免使用回调,特别是在发送电子邮件时。您超出了模型在MVC中应该做的事情的范围,即与数据库交互。

您可以在控制器中移动它,例如:

代码语言:javascript
运行
复制
class UsersController < ApplicationController
  ...
  def destroy
    UserMailer.bye_email(@user).deliver_now
    @user.destroy!

    redirect_to ...
  end
end
票数 0
EN

Stack Overflow用户

发布于 2019-03-13 01:57:45

我认为失败的是你的delete方法,而不是你的回调。只需尝试将其替换为“destroy”,它应该可以正常工作。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55127567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档