[RUBY] 11.2 Envoyer un e-mail d'activation de compte: Notes du didacticiel Rails - Chapitre 11

11.2 Envoyer l'e-mail d'activation du compte

11.2.1 Modèle de courrier sortant

Mailer peut être généré avec rails generate (Password_reset sera utilisé plus tard)

$ rails generate mailer UserMailer account_activation password_reset 

Le produit est

      create  app/mailers/user_mailer.rb #Définissez quelque chose comme une action ici
      invoke  erb
      create    app/views/user_mailer
      create    app/views/user_mailer/account_activation.text.erb #Mise en page du courrier (texte)
      create    app/views/user_mailer/account_activation.html.erb #Mise en page du courrier (html)

ERB peut être utilisé pour la mise en page

edit_account_activation_url(@user.activation_token, email: @user.email)

Et prends deux arguments Renvoie un chemin comme celui-ci

/account_activations/(1er argument)/edit?(2ème argument)

Les éléments suivants sont appelés ** paramètres de requête ** Écrit comme une paire clé / valeur avec ? Email = ...

Le fichier de vue doit avoir l'assistant d'URL ci-dessus intégré

** Variables d'instance **, ** Destination **, ** Titre ** utilisées dans les fichiers de vue Défini dans app / mailers / user_mailer.rb`

  def account_activation(user)
    @user = user
    mail to: user.email, subject: "Account activation"
  end

11.2.2 Aperçu du courrier sortant

Si vous suivez la procédure Vous pourrez prévisualiser dans le navigateur

11.2.3 Test du courrier sortant

Le test est déjà décrit ci-dessous Cause de $ rails test> (ROUGE)

test/mailers/user_mailer_test.rb
require 'test_helper'

class UserMailerTest < ActionMailer::TestCase
  test "account_activation" do
    mail = UserMailer.account_activation
    assert_equal "Account activation", mail.subject
    assert_equal ["[email protected]"], mail.to
    assert_equal ["[email protected]"], mail.from
    assert_match "Hi", mail.body.encoded
  end
.
.
.
end

config/environments/test.rb


Rails.application.configure do
  .
  .
  .
  config.action_mailer.delivery_method = :test
  config.action_mailer.default_url_options = { host: 'example.com' } #Configurer un hôte pour l'environnement de test
  .
  .
  .
end

Ce devrait être $ rails test> (VERT)

    assert_equal ["[email protected]"], mail.from

Après la fixation

Il est devenu $ rails test> (VERT)

11.2.4 Action de création utilisateur mise à jour

Changer l'action create

--Envoyer un mail avec ʻUserMailer.account_activation (@user) ` --Modifier le message flash

	def create
    @user = User.new(user_params)
    if @user.save
      UserMailer.account_activation(@user).deliver_now
      flash[:info] = "Please check your email to activate your account."
      redirect_to root_url
    else
      render 'new'
    end
  end

Puisque le comportement change, il devient $ rails test> (RED)

Recommended Posts

11.2 Envoyer un e-mail d'activation de compte: Notes du didacticiel Rails - Chapitre 11
tutoriel rails À propos de l'activation de compte dans l'environnement de production
11.1 Ressource AccountActivations: Mémorandum du didacticiel Rails - Chapitre 11
Piped together grep?: Mémorandum du Tutoriel Rails - Chapitre 8
rails tutry
tutoriel sur les rails
rails tutry
tutoriel sur les rails
tutoriel sur les rails
tutoriel sur les rails
Test des messages d'erreur: Notes du didacticiel Rails - Chapitre 7
tutoriel rails Chapitre 6
Test du tutoriel sur les rails
tutoriel rails Chapitre 1
Mémorandum du didacticiel Rails 1
Tutoriel Rails Memorandum 2
tutoriel rails Chapitre 5
tutoriel rails Chapitre 10
tutoriel rails Chapitre 9
tutoriel rails Chapitre 8
[Débutant] Tutoriel Rails
J'ai changé la façon dont le didacticiel Rails fonctionne: Notes du didacticiel Rails - Chapitre 9
Fiche technique du didacticiel Rails
Tutoriel Rails Chapitre 3 Apprentissage
[Rails] Didacticiel Apprendre avec les rails
Mettre en œuvre le BAN du compte Rails
Mémorandum du didacticiel Rails (Chapitre 3, 3.1)
Tutoriel Rails Chapitre 4 Apprentissage
Tutoriel Rails Chapitre 1 Apprentissage
Tutoriel Rails Chapitre 2 Apprentissage
rails Tutorial Fighting Record III