Rails-Devise envoyer un e-mail à l'utilisateur après s'inscrire / créer
je suis assez nouveau aux rails et j'essaie de comprendre les choses. J'ai récemment reçu un postier tout prêt et ça marchait très bien. Mais j'essaie d'ajouter un deuxième mailer pour les actions des utilisateurs et cela ne semble pas fonctionner.
ce que j'essaie de faire, c'est qu'un utilisateur s'inscrive, envoie un email à l'administrateur, puis l'administrateur doit activer l'utilisateur. Actuellement, lorsque l'administrateur activera l'utilisateur, il lui enverra un e-mail, mais pour une raison quelconque, mon e-mail utilisateur nouvellement créé ne démarre pas. Je pense c'est parce que ma méthode create ne fonctionne pas, où devrais-je la mettre? Dois-je réécrire une méthode de l'utilisateur?
Mon UserMailer contrôleur:
class UserMailer < ActionMailer::Base
default from: "website@rnd.designcom.com.au"
def send_enabled_message(user)
@user = user
mail(:to => user.email, :subject => "Welcome to Pixel Technologies!!!")
end
def send_new_user_message(user)
@user = user
mail(:to => 'ben.suryn@rnd.designcom.com.au', :subject => "New User created please review and enable.")
end
end
Mon users_controller:
class UsersController < ApplicationController
before_filter :authenticate_user!
load_and_authorize_resource
# POST /users
def create
@user = User.new(user_params)
puts "******************** NEW USER ****************************"
puts user_params
if @user.save
puts 'Sending email for create user'
UserMailer.send_new_user_message(@user).deliver
redirect_to @user, notice: 'User was successfully created.'
else
render action: 'new'
end
end
mais cette méthode create n'est jamais utilisée. Que suis-je donig mal. Y a-t-il une autre méthode que j'ai besoin de mettre UserMailer.send_new_user_message (@user).livrer?
2 réponses
quand les utilisateurs s'inscrivent avec Devise, ils ne passent pas par le UsersController
.
vous pourriez vouloir ajouter le code d'envoi de courrier dans le User
modèle.
Par exemple,app/models/user.rb
:
class User < ActiveRecord::Base
# ...
after_create :send_admin_mail
def send_admin_mail
UserMailer.send_new_user_message(self).deliver
end
# ...
end
Ceci est fait en utilisant l'Enregistrement Actif after_create
rappel.
les e-mails de Confirmation doivent être envoyés par le contrôleur. Il est simple d'Outrepasser le Devise::RegistrationsController
valeurs par défaut.
Créer le fichier app/controllers/my_registrations_controller.rb
(le nom de ce tout ce que vous voulez)
class MyRegistrationsController < Devise::RegistrationsController
def create
super
if @user.persisted?
UserMailer.new_registration(@user).deliver
end
end
end
puis dans vos routes:
devise_for :users, :controllers => { :registrations => "my_registrations" }