La dernière version 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?
pour "activer" confirmable, il vous suffit de l'ajouter à votre modèle, par exemple:
class User
# ...
devise :confirmable , ....
# ...
end
après cela, vous devrez créer et exécuter une migration qui ajoute les colonnes requises à 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: Ajouter un module confirmable à un site existant en utilisant Devise
Je recommanderais de vérifier le code source pour voir comment fonctionne Confirmable:
https://github.com/plataformatec/devise/blob/master/lib/devise/models/confirmable.rb
Vous pouvez également consulter le RailsCast sur Devise:
http://railscasts.com/episodes/209-introducing-devise
Ensuite, il serait préférable de rechercher des exemples d’applications sur GitHub.
Cette question semble être étrange ;-) Si vous avez écrit une certaine migration:
change_table(:users) do |t|
t.confirmable
end
add_index :users, :confirmation_token, :unique => true
et comme vous l'avez dit, peu de changement de modèle (passage supplémentaire =>: confirmable à concevoir) comme ceci:
devise :database_authenticatable, :registerable, :confirmable
vous pouvez maintenant générer des vues (si vous ne l'avez pas fait)
Rails generate devise:views
Vous pouvez aller à app/views/inventer/confirmations/new.html.erb et vérifier son apparence ou le modifier. De plus, vous pouvez inspecter app/views/inventer/confirmations/shared/_links.erb => il y a une ligne:
<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
Cette condition vérifie si confirmable est activée, donc ... techniquement, si tout s'est bien passé, il devrait fonctionner correctement. Après avoir créé un nouveau compte - dans le journal - vous devriez voir les lignes où le courrier de confirmation est envoyé avec le lien approprié. Cela déclenche:
Rendered devise/mailer/confirmation_instructions.html.erb
de sorte que vous avez prochain endroit où vous pouvez le personnaliser un peu
Comment personnaliser la stratégie de confirmation? S'il vous plaît demander à la question exacte ce que vous voulez atteindre. Vous pouvez vérifier le chemin d'accès aux pierres précieuses. Dans /lib/devise/models/confirmable.rb, certains commentaires pourraient être utiles.
cordialement
Si vous avez déjà installé conce dans votre application et souhaitez ajouter "confirmable" ultérieurement, au lieu de lancer:
Rails generate devise:views
comme mentionné par Piotr, exécutez
Rails generate devise:views confirmable
pour ne produire que les vues nécessaires pour "confirmable". Vous verrez la sortie 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 pourrez alors accéder à ces fichiers directement dans votre projet pour les styler comme votre application. Vous pourrez également modifier la messagerie dans les courriels que Devise envoie par le biais des vues générées.
Enfin, n'oubliez pas d'ajouter config.action_mailer.delivery_method et config.action_mailer.smtp_settings dans votre fichier app/config/environnements/{nom_environnement} .rb. Voici à quoi ressemble mon fichier 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 }
Commander Concevoir la page wiki . Il y a une réponse complète à votre question.
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 }
Après avoir configuré le paramètre ActionMailer décrit ci-dessus, j'ai dû faire un dernier ajout au fichier config/environment/development.rb pour corriger une page d'erreur qui s'afficherait après l'enregistrement d'un nouvel utilisateur:
config.action_mailer.default_url_options = {: Host => 'localhost'}
Plus de détails sur cette solution: Heroku/devise - Hôte manquant vers lequel se connecter! Veuillez indiquer: Paramètre d'hôte ou définissez default_url_options [: Host]