ruby-on-rails-3 - instalar - rspec rails devise
¿Cómo activo: confirmable en Devise? (6)
La versión más reciente de Devise no tiene: confirmable habilitado por defecto. Ya agregué las columnas respectivas al modelo de usuario pero no puedo encontrar ningún ejemplo de código de cómo habilitar: confirmable.
¿Dónde puedo encontrar un buen ejemplo o qué código necesito para habilitarlo?
Checkout idear página wiki . Hay una respuesta completa para su pregunta.
Después de configurar la configuración de ActionMailer descrita anteriormente, tuve que hacer una última adición al archivo config / environments / development.rb para corregir una página de error que aparecería después de registrar un nuevo usuario:
config.action_mailer.default_url_options = {: host => ''localhost''}
Más detalles sobre esta solución: Heroku / idear - ¡Falta el host al que enlazar! Proporcione: parámetro de host o configure default_url_options [: host]
Esta pregunta parece ser extraña ;-) Si escribiste alguna migración por igual:
change_table(:users) do |t|
t.confirmable
end
add_index :users, :confirmation_token, :unique => true
y como dijiste, poco cambio en el modelo (pasando adicional =>: confirmable para diseñar) como sigue:
devise :database_authenticatable, :registerable, :confirmable
ahora puedes generar algunas vistas (si no lo hiciste)
rails generate devise:views
Puede ir a la aplicación / vistas / idear / confirmaciones / new.html.erb y comprobar cómo se ve o cambiarla. Además, puede inspeccionar la aplicación / vistas / idear / confirmaciones / compartida / _links.erb => hay línea:
<%- if devise_mapping.confirmable? && controller_name != ''confirmations'' %>
Esta condición verifica si confirmable está activado así que ... técnicamente si todo salió bien debería funcionar 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 desencadena:
Rendered devise/mailer/confirmation_instructions.html.erb
así que tienes el siguiente lugar donde puedes personalizarlo 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.
Saludos
Para DRY, también puede poner la configuración de correo en config / initializers / mail.rb como:
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => ''[redacted]'',
:user_name => ''[redacted]'',
:password => ''[redacted]'',
:authentication => ''plain'',
:enable_starttls_auto => true }
Si ya has instalado el programa en tu aplicación, y quieres agregar "confirmable" más tarde, en lugar de ejecutar:
rails generate devise:views
como lo menciona Piotr, corre
rails generate devise:views confirmable
para producir solo las vistas necesarias para "confirmable". Verás resultados como este:
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, podrá acceder a estos archivos directamente en su proyecto para diseñarlos 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 olvides agregar config.action_mailer.delivery_method y config.action_mailer.smtp_settings en tu archivo app / config / environments / {environment_name} .rb. Así es como se ve mi archivo production.rb:
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 }
para "habilitar" confirmable, solo tiene que agregarlo a su modelo, por ejemplo:
class User
# ...
devise :confirmable , ....
# ...
end
después de eso, deberá crear y ejecutar una migración que agregue las columnas requeridas a 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
ver: Agregar módulo confirmable a un sitio existente usando Devise
Recomiendo comprobar el código fuente para ver cómo funciona Confirmable:
https://github.com/plataformatec/devise/blob/master/lib/devise/models/confirmable.rb
También puedes consultar RailsCast en Devise:
http://railscasts.com/episodes/209-introducing-devise
A continuación, sería mejor buscar aplicaciones de ejemplo en GitHub