2011-01-24 18 views
41

La versión más reciente de Devise no tiene: confirmación habilitada de forma predeterminada. Ya agregué las columnas respectivas al modelo de usuario pero no puedo encontrar ningún ejemplo de código de cómo habilitar: confirmable.¿Cómo activo: confirmable en Devise?

¿Dónde puedo encontrar un buen ejemplo o qué código necesito para habilitarlo?

Respuesta

19

Esta pregunta parece ser una extraña ;-) Si alguna migración escrito por igual:

change_table(:users) do |t| 
     t.confirmable 
    end 
    add_index :users, :confirmation_token, :unique => true 

y como usted ha dicho poco cambio en el modelo (paso adicional =>: confirmable idear) de esta manera:

devise :database_authenticatable, :registerable, :confirmable 

ahora puede generar algunos puntos de vista (si no lo hiciste)

rails generate devise:views 

se puede ir a app/VI ews/devise/confirmations/new.html.erb y comprueba cómo se ve o lo modifica. Además se puede inspeccionar app/views/diseñar/confirmaciones/shared/_links.erb => existe línea:

<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %> 

Esta condición comprueba si es confirmable se utiliza de manera técnicamente ... si todo ha ido bien debería trabajos OOTB. Después de crear una nueva cuenta, en el registro, debería ver las líneas donde se envía el correo de confirmación con el enlace apropiado. Se dispara:

 Rendered devise/mailer/confirmation_instructions.html.erb 

por lo que han conseguido próximo lugar donde se puede personalizar un poco

Cómo personalizar la estrategia de confirmación? Por favor, pregunta exactamente qué quieres lograr. Usted puede verificar el camino de la gema. En /lib/devise/models/confirmable.rb, algunos comentarios podrían ser útiles.

respecto

+0

1 para los detalles. Muchas gracias. – riship89

+4

Cabe señalar que el estilo de la migración ahora está desactualizado según V2. https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0-migration-schema-style – tibbon

16

Si ya ha instalado diseñar en su aplicación, y quieren añadir "confirmable" más adelante, en lugar de correr:

rails generate devise:views 

como se ha mencionado de Piotr, ejecute

rails generate devise:views confirmable 

para producir solo las vistas necesarias para "confirmable". Usted verá una salida como ésta:

rails generate devise:views confirmable 
    invoke Devise::Generators::SharedViewsGenerator 
    create app/views/confirmable/mailer 
    create app/views/confirmable/mailer/confirmation_instructions.html.erb 
    create app/views/confirmable/mailer/reset_password_instructions.html.erb 
    create app/views/confirmable/mailer/unlock_instructions.html.erb 
    create app/views/confirmable/shared 
    create app/views/confirmable/shared/_links.erb 
    invoke form_for 
    create app/views/confirmable/confirmations 
    create app/views/confirmable/confirmations/new.html.erb 
    create app/views/confirmable/passwords 
    create app/views/confirmable/passwords/edit.html.erb 
    create app/views/confirmable/passwords/new.html.erb 
    create app/views/confirmable/registrations 
    create app/views/confirmable/registrations/edit.html.erb 
    create app/views/confirmable/registrations/new.html.erb 
    create app/views/confirmable/sessions 
    create app/views/confirmable/sessions/new.html.erb 
    create app/views/confirmable/unlocks 
    create app/views/confirmable/unlocks/new.html.erb 

a continuación, será capaz de acceder a estos archivos directamente en su proyecto con el estilo de ellos como su aplicación. También podrá cambiar los mensajes en los correos que Devise envía a través de las vistas de correo generadas.

Por último, no olvide agregar config.action_mailer.delivery_method y config.action_mailer.smtp_settings en su archivo app/config/environments/{environment_name} .rb. Esto es lo que se ve mi archivo production.rb como:

config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    :address    => "smtp.gmail.com", 
    :port     => 587, 
    :domain    => '[redacted]', 
    :user_name   => '[redacted]', 
    :password    => '[redacted]', 
    :authentication  => 'plain', 
    :enable_starttls_auto => true } 
+0

¿No necesita hacer una migración como sugiere Tilo? – Leahcim

+2

Er, esto está un poco apagado. Todas las vistas creadas aquí no ayudarán. Sólo se necesita realmente: 'crear app/views/confirmable/confirmaciones crean app/views/confirmable/confirmaciones/new.html.erb crear app/views/confirmable/bolsas/confirmation_instructions.html.erb' – jackyalcine

+0

Hola, ¿Cuál es la configuración correcta para: dominio? ¿Es dominio de mi aplicación heroku o? –

72

en "Activar" confirmable, sólo tiene que añadirlo a su modelo, por ejemplo,:

class User 
    # ... 
    devise :confirmable , .... 
    # ... 
end 

después de eso, usted tiene que crear y ejecutar una migración que se suma las columnas necesarias para su modelo:

# rails g migration add_confirmable_to_devise 
class AddConfirmableToDevise < ActiveRecord::Migration 
    def self.up 
    add_column :users, :confirmation_token, :string 
    add_column :users, :confirmed_at,  :datetime 
    add_column :users, :confirmation_sent_at , :datetime 
    add_column :users, :unconfirmed_email, :string 

    add_index :users, :confirmation_token, :unique => true 
    end 
    def self.down 
    remove_index :users, :confirmation_token 

    remove_column :users, :unconfirmed_email 
    remove_column :users, :confirmation_sent_at 
    remove_column :users, :confirmed_at 
    remove_column :users, :confirmation_token 
    end 
end 

véase: Adding confirmable module to an existing site using Devise

lo recomiendo a compruebe el código fuente para ver cómo funciona Confirmable:

https://github.com/plataformatec/devise/blob/master/lib/devise/models/confirmable.rb

También puede comprobar el Railscast en Diseñar:

http://railscasts.com/episodes/209-introducing-devise

siguiente sería la mejor manera de buscar por ejemplo aplicaciones en GitHub

+0

Esto debe marcarse como la respuesta, así como agregar un poco de "http://stackoverflow.com/a/7577878/602588" (respuesta a continuación). – jackyalcine

+2

También necesitará agregar la línea: add_column: users,: unconfirmed_email,: string – Calciphus

+0

¿es un cambio reciente en Devise? – Tilo

2

Secos, también puede poner config anuncio publicitario en config/inicializadores/mail.rb gustaría:

ActionMailer::Base.smtp_settings = { 
    :address    => "smtp.gmail.com", 
    :port     => 587, 
    :domain    => '[redacted]', 
    :user_name   => '[redacted]', 
    :password    => '[redacted]', 
    :authentication  => 'plain', 
    :enable_starttls_auto => true } 
Cuestiones relacionadas