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
A continuación, cree 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 usted tiene una prueba de pepino que ejerce las funciones de usuario crear, puede añadir este paso para que la función y la 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
You entornos/test.rb deben tener estos valores 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 usted puede probar para mucho más (a, desde, etc) en el mensaje, pero esto lo iniciará de una manera BDD si así lo desea.
Véase también algunos temas de mayor edad stackoverflow con penetración en esta pregunta son:
¿Qué sucede si no está utilizando: confirmable? – Arcolye
Si no es: comfirmable, usaría el mismo método pero llámelo: after_create –