it-swarm.com.de

Wie aktiviere ich: in Devise bestätigbar?

Die neueste Version von Devise verfügt nicht über: Confirmable, das standardmäßig aktiviert ist. Ich habe bereits die entsprechenden Spalten zum Benutzermodell hinzugefügt, kann jedoch keine Codebeispiele finden, um Folgendes zu aktivieren: Confirmable.

Wo finde ich ein gutes Beispiel oder welchen Code brauche ich, um es zu aktivieren?

41
Evan Machnic

um "bestätigend" zu aktivieren, müssen Sie es lediglich zu Ihrem Modell hinzufügen, z.

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

danach müssen Sie eine Migration erstellen und ausführen, die Ihrem Modell die erforderlichen Spalten hinzufügt:

# 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

siehe: Hinzufügen eines bestätigbaren Moduls zu einer vorhandenen Site mit Devise

Ich würde empfehlen, den Quellcode zu überprüfen, um zu sehen, wie Confirmable funktioniert:

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

Sie können auch den RailsCast auf Devise überprüfen:

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

Als Nächstes wäre es am besten, nach Anwendungen auf GitHub zu suchen

72
Tilo

Diese Frage scheint seltsam zu sein ;-) Wenn Sie eine Migration gleichermaßen geschrieben haben:

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

und wie Sie sagten, wenig Änderung im Modell (Weitergabe =>: Bestätigbar):

    devise :database_authenticatable, :registerable, :confirmable

sie können jetzt einige Ansichten erzeugen (wenn Sie nicht ')

    Rails generate devise:views

Sie können app/views/devise/confirmations/new.html.erb aufrufen und prüfen, wie es aussieht, oder es ändern. Außerdem können Sie App/Views/Devise/Confirmations/Shared/_links.erb => überprüfen. Dort ist Zeile:

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

Diese Bedingung prüft, ob Confirmable aktiviert ist. Technisch gesehen, wenn alles in Ordnung ist, sollte es OOTB funktionieren. Nach dem Erstellen eines neuen Kontos im Protokoll sollten Sie die Zeilen sehen, in denen die Bestätigungsmail mit dem entsprechenden Link gesendet wird. Es löst aus:

     Rendered devise/mailer/confirmation_instructions.html.erb

so haben Sie den nächsten Ort, wo Sie es ein wenig anpassen können

Wie kann die Bestätigungsstrategie angepasst werden? Bitte fragen Sie genau, was Sie erreichen wollen. Sie können den Edelsteinpfad prüfen. In /lib/devise/models/confirmable.rb könnten einige Kommentare hilfreich sein. 

grüße

19
Piotr Mąsior

Wenn Sie devise bereits in Ihrer App installiert haben und später "bestätigbar" hinzufügen möchten, anstatt Folgendes auszuführen:

Rails generate devise:views

wie von Piotr erwähnt, laufen

Rails generate devise:views confirmable

um nur die Ansichten zu erzeugen, die für "bestätigbar" erforderlich sind. Sie sehen die Ausgabe wie folgt:

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 

Sie können dann auf diese Dateien direkt in Ihrem Projekt zugreifen, um sie wie Ihre Anwendung zu gestalten. Sie können auch die Nachrichten in den E-Mails ändern, die Devise über die generierten Mailer-Ansichten versendet. 

Vergessen Sie nicht, config.action_mailer.delivery_method und config.action_mailer.smtp_settings in Ihrer app/config/umwelts/{Umgebungsname}. So sieht meine production.rb-Datei aus:

  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  }
16
Jeremy Thomas

Kasse Wiki-Seite erstellen . Es gibt eine vollständige Antwort auf Ihre Frage. 

8
cintrzyk

Für DRY können Sie mailer config auch in config/initializers/mail.rb einfügen:

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

Nach der Konfiguration der oben beschriebenen ActionMailer-Einstellung musste ich noch eine letzte Erweiterung in der Datei config/umwelts/entwicklung.rb vornehmen, um eine Fehlerseite zu beheben, die nach der Registrierung eines neuen Benutzers angezeigt wurde: 

config.action_mailer.default_url_options = {: Host => 'localhost'}

Weitere Details zu dieser Lösung: Heroku/devise - Missing Host als Link! Bitte geben Sie an: Host-Parameter oder setzen Sie default_url_options [: Host]

0
Moon Man