41 votes

Comment puis-je activer: confirmable dans Devise?

La version la plus récente de Devise n'a pas: confirmable activé par défaut. J'ai déjà ajouté les colonnes respectives au modèle utilisateur mais je ne trouve aucun exemple de code indiquant comment activer: confirmable.

Où puis-je trouver un bon exemple ou de quel code ai-je besoin pour l'activer?

72voto

Tilo Points 13833

pour "activer" confirmable, il vous suffit de l'ajouter à votre modèle, par exemple:

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

après cela, vous aurez à créer et exécuter une migration qui ajoute les colonnes requises pour votre modèle:

# 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

voir: L'ajout de confirmable module pour un site existant à l'aide de Concevoir

Je vous recommande de vérifier le code source pour voir comment Confirmable œuvres:

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

Vous pouvez aussi vérifier les RailsCast à Concevoir:

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

Ensuite, il serait préférable de rechercher des exemples d'applications sur GitHub

19voto

Piotr Mąsior Points 1144

Cette question semble être bizarre ;-) Si vous avez écrit des migrations, de la même manière:

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

et comme vous l'avez dit peu de changement dans le modèle (en passant supplémentaires => :confirmable à concevoir) comme suit:

    devise :database_authenticatable, :registerable, :confirmable

vous pouvez maintenant générer des vues (si vous ne l'')

    rails generate devise:views

Vous pouvez accéder à l'application/views/concevoir/confirmation de la nouvelle.html.erb et de vérifier comment il ressemble ou le changer. En outre, vous pouvez inspecter app/views/concevoir/confirmations/shared/_links.erb => il est en ligne:

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

Cette condition vérifie si confirmable est allumé... donc techniquement, si tout s'est bien passé, il devrait œuvres OOTB. Après création d'un compte - log - vous devriez voir des lignes où le mail de confirmation est envoyé avec le lien approprié. Il déclenche:

     Rendered devise/mailer/confirmation_instructions.html.erb

si vous avez eu prochain endroit où vous pouvez le personnaliser un peu

Comment personnaliser la confirmation de la stratégie? Veuillez poser des question exacte de ce que vous voulez atteindre. Vous pouvez le vérifier concevoir gem chemin. Dans /lib/concevoir/modèles/confirmable.rb certains commentaires pourraient être utiles.

ce qui concerne

16voto

Jeremy Thomas Points 241

Si vous avez déjà installé concevoir votre application, et souhaitez ajouter des "confirmable" plus tard, au lieu de l'exécution:

rails generate devise:views

comme mentionné par Piotr, exécutez

rails generate devise:views confirmable

pour produire seulement les points de vue nécessaires pour "confirmable". Vous allez voir le résultat comme ceci:

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 

Vous serez alors en mesure d'accéder à ces fichiers directement dans votre projet à un style comme celui de votre application. Vous serez également en mesure de modifier la messagerie dans les e-mails Concevoir envoie par le biais de l'généré mailer points de vue.

Dernière, n'oubliez pas d'ajouter config.action_mailer.delivery_method et de configuration.action_mailer.smtp_settings dans votre app/config/environments/{environment_name}.rb fichier. C'est ce que ma production.rb fichier ressemble à ceci:

  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  }

8voto

cintrzyk Points 121

Passer à la caisse sur la page wiki . Il y a une réponse complète à votre question.

2voto

Michael Wong Points 20

Pour DRY, vous pouvez aussi mettre mailer config dans config / initializers / mail.rb comme ceci:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X