Отправить письмо после удаления учетной записи пользователя (before_destroy) в рельсах 5 - PullRequest
0 голосов
/ 12 марта 2019

Я вроде новичок в 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

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Как подсказывает @ konstantin-strukov, вам следует избегать обратных вызовов, особенно для отправки электронных писем. Вы выходите за рамки того, что Модель должна делать в MVC, т.е. взаимодействует с базой данных.

Вы можете переместить это в контроллер, например:

class UsersController < ApplicationController
  ...
  def destroy
    UserMailer.bye_email(@user).deliver_now
    @user.destroy!

    redirect_to ...
  end
end
0 голосов
/ 12 марта 2019

Я думаю, что это ваш метод удаления, а не обратный вызов, который не работает. Просто попробуйте заменить его на «уничтожить», и оно должно работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...