tutorial signup sign_in rails method instalar example ejemplos ruby-on-rails ruby-on-rails-3 devise

ruby-on-rails - signup - devise wiki



Rails 3: envíe un correo electrónico de bienvenida con Devise (4)

Mira en tu config / devise.rb

Puede cambiar los temas en sus archivos locales (config / locales / devise.en.yml)

¿Cómo puedo enviar un correo electrónico de bienvenida cuando un usuario se registra en mi servicio?

Además, ¿cómo puedo cambiar los correos electrónicos desde y desde el campo Asunto de Devise?

Gracias


¡Lo hice anulando la confirmación del inventor! método: https://gist.github.com/982181

class User < ActiveRecord::Base devise :invitable, :database_authenticatable, :registerable, :recoverable, :rememberable, :confirmable, :validatable, :encryptable # ... # devise confirm! method overriden def confirm! welcome_message super end # ... private def welcome_message UserMailer.welcome_message(self).deliver end end


No puedo usar la respuesta "aprobada" porque no estoy usando Devise''s: confirmable.

No me gustaron las otras soluciones porque tienes que usar devoluciones de llamada modelo, que siempre enviarán correos electrónicos de bienvenida incluso cuando crees su cuenta en la consola o en una interfaz de administrador. Mi aplicación implica la capacidad de importar en masa usuarios desde un archivo CSV. No quiero que mi aplicación envíe un correo electrónico sorpresa a todos los 3000 de uno en uno, pero sí quiero que los usuarios que crean su propia cuenta reciban un correo electrónico de bienvenida. La solución:

1) Anular el controlador de registros de Devise:

#registrations_controller.rb class RegistrationsController < Devise::RegistrationsController def create super UserMailer.welcome(resource).deliver unless resource.invalid? end end

2) Decirle idear que anula su controlador de Registros:

# routes.rb devise_for :users, controllers: { registrations: "registrations" }

Por supuesto, puede adaptar "UserMailer" y "devise_for: users" para que coincida con el nombre del modelo que está utilizando.


Esta es una gran discusión. Anular el método como lo sugiere Benoror funcionará muy bien. Si crees que podrías querer capturar otros eventos de usuario, entonces, como otros han sugerido en otra parte, una clase de observador podría ser el enfoque más limpio. Esta solución es para Rails 3.0.x y 3.1.

Para configurar un observador, realice los siguientes cambios en su archivo de aplicación, agregando este observador a cualquier otro que ya tenga.

#config/application.rb config.active_record.observers = :user_observer

Luego crea un nuevo archivo en el directorio de modelos:

#app/models/user_observer.rb class UserObserver < ActiveRecord::Observer def after_create(user) Notifier.user_new(user).deliver end end

Si tiene una prueba de pepino que ejercita las funciones de crear usuario, puede agregar este paso a esa característica y hacer una copia de seguridad con un paso de trabajador para verificar si hay un correo electrónico en la matriz de correo de prueba.

#features/users/sign_up.feature for example Scenario: User signs up with valid data ... And I should receive an email with "[Text from your welcome message]" #features/common_steps.rb Then /^I should receive an email with "([^"]*)"$/ do |value| # this will get the most recent email, so we can check the email headers and body. ActionMailer::Base.deliveries.should_not be_empty @email = ActionMailer::Base.deliveries.last @email.body.should include(value) #@email.from.should == ["[email protected]"] end

Sus entornos / test.rb deberían tener estas configuraciones para construir una matriz de correo en lugar de enviar:

config.action_mailer.delivery_method = :test config.action_mailer.perform_deliveries = true

No hace falta decir que puede probar mucho más (desde, desde, etc.) en el mensaje, pero esto le permitirá iniciarse de una manera BDD si así lo desea.

Vea también algunos hilos antiguos de con información sobre esta pregunta, que incluyen: