2011-01-04 15 views

Respuesta

50

El método skip_confirmation! está disponible para cualquier modelo confirmable.

@user = User.new params[:user] 
@user.skip_confirmation! # Sets confirmed_at to Time.now, activating the account 
@user.save 

La cuenta de usuario se activará. Si no quieres eso, continúa leyendo.

Devise utiliza devoluciones de llamada condicionales para generar el token de confirmación y enviar el correo electrónico. Se llamarán las devoluciones de llamada solo si confirmation_required? devuelve true. Redefinir el modelo de:

def confirmation_required? 
    false 
end 

Sin embargo, esto hará que el método active_for_authentication? siempre devuelven verdadero porque se necesita si se requiere o no la confirmación en cuenta. Tenemos que volver a definir así:

def active_for_authentication? 
    confirmed? || confirmation_period_valid? 
end 

De esta manera, la cuenta permanecerá inactiva y ningún correo electrónico de confirmación será enviado. Deberá activar manualmente al usuario llamando al confirm! en el registro o simplemente configurando confirmed_at en cualquier fecha.

Es bastante pirata, pero debería funcionar.

Como referencia: confirmable.rb

+1

gracias. pero no quiero que el usuario pueda iniciar sesión. configurará al usuario para que confirme ¿le permite al usuario algún tipo de inicio de sesión? ¿Qué hará eso, solo evitar que se envíen correos electrónicos? gracias – AnApprentice

+0

Además, cuando trato de guardar un nuevo usuario como el que mencioné anteriormente, recibo FALSE en @usuario.save ... además de un correo electrónico, ¿qué otros campos son necesarios para salvar a un usuario? – AnApprentice

+0

Actualicé mi respuesta. Todos los campos marcados como no nulos en su esquema o cuya presencia valide su modelo son obligatorios. Si no los proporciona, Active Record no guardará su objeto. –

9

sólo quiero añadir para futuras referencias que desde Diseñar 2.2 ahora hay un método skip_confirmation_notification! disponible, así que básicamente hace todo desde el post Matheus' sin redefinir los métodos en el modelo.

Cuestiones relacionadas