2012-07-08 22 views
20

me gustaría utilizar la opción legado: reconfirmable en mi modelo de usuario, por lo que cada vez que un usuario cambia su correo electrónico, tiene que confirmarlo con un enlace enviado por correo electrónico.idear reconfirmable

El gran problema es, que el correo electrónico no se envía ...

Mi disposición es con el legado 2.1.2 es: Modelo

usuario:

attr_accessible: unconfirmed_email, ... 

devise :invitable, :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, :omniauthable 

en el legado initilizer .rb:

config.reconfirmable = true 

en las rutas:

devise_for :users 

en la forma en que el campo de modelo unconfirmed_email se establece correctamente. Lo revisé a través de la consola.

El primer correo electrónico de confirmación, cuando un usuario se registra en la página consigue enviar a cabo sin problema.

he intentado depurar el problema con la adición de este código al directorio de inicializadores para sobrescribir el méthode legado que se desencadena como un gancho after_update:

module Devise::Models::Confirmable 
    def send_confirmation_instructions 
    debugger 
    end 
end 

parece send_confirmation_instructions Nunca se llama, ya que nunca llegue a el depurador

¿Debo de alguna manera llamar reconfirmable, o se dispara automáticamente al configurar el atributo del modelo "unconfirmed_email" en una nueva dirección de correo electrónico?

Thankfull por cualquier ayuda, j.

+1

Para reconfirmable para trabajar usted tiene que añadir una nueva columna a la tabla usuario t.string: unconfirmed_email # Sólo si se utiliza reconfirmable ' ¿ya ha hecho esto? – Himshwet

+0

hola janders. eso está todo configurado, tengo el atributo en mi modelo de usuario y en attr_accessible ... Todavía no he resuelto este problema, por lo que cualquier ayuda es bienvenida. – user1311103

+0

Lo siento, no puedo entender lo que está mal – Himshwet

Respuesta

33

OK, esto es embarazoso ..

Después de sumergirse en el código Diseñar, me di cuenta de que no es necesario para establecer el atributo unconfirmed_email de su modelo de usuario, pero acaba de cambiar el atributo de correo electrónico existente. El atributo unconfirmed_email se usa internamente para que Devise almacene la dirección de correo electrónico hasta que se confirme.

versión posterior de la gema legado explica esto en la migración inicial. Aquí está la sección "Confirmable" (tenga en cuenta el comentario de la última línea) de XXX_devise_create_users.rb la migración:

## Confirmable 
    t.string :confirmation_token 
    t.datetime :confirmed_at 
    t.datetime :confirmation_sent_at 
    t.string :unconfirmed_email # Only if using reconfirmable 

Lo siento por molestar, pero espero que esto puede ayudar a alguien con el mismo problema ...

+2

Gracias por esto. Es bueno saber que Devise "automágicamente" rellena 'no confirmado_email' cuando actualizo' email' en el modelo. No olvide marcar su respuesta como "Aceptada" (sí, ¡aunque la haya respondido usted mismo!). –

+0

Sí ... Pensaste bien ... incluso si fue después de 2 años ... fue útil para mí. :) – Alfie

Cuestiones relacionadas