Beim Erstellen einer Authentifizierungsfunktion mit Sorcery installiere ich jedes Mal ein Submodul, um jede Funktion hinzuzufügen. Ich bin jedoch auf den Versuch gestoßen, gemäß dem offiziellen Tutorial fortzufahren, sodass ich die Lösung beschreiben werde.
Nehmen wir das Beispiel des Hinzufügens der Benutzeraktivierungsfunktion.
Installieren Sie zuerst das Submodul
$ rails g sorcery:install user_activation --only-submodules
Anschließend wird die folgende Migrationsdatei erstellt.
[timestamp]_sorcery_user_activation.rb
class SorceryUserActivation < ActiveRecord::Migration
def change
add_column :users, :activation_state, :string, :default => nil
add_column :users, :activation_token, :string, :default => nil
add_column :users, :activation_token_expires_at, :datetime, :default => nil
add_index :users, :activation_token
end
end
Und mein großer
$ rails db:migrate
Hier ist ein Fehler aufgetreten!
rails aborted!
ArgumentError: To use user_activation submodule, you must define a mailer (config.user_activation_mailer = YourMailerClass).
Die Fehlermeldung lautet "Wenn Sie dieses Submodul verwenden, schreiben Sie einen Mailer!". Wenn Sie ihm jedoch folgen, tritt ein weiterer Fehler auf und Sie können nicht fortfahren.
Dieses Problem tritt auf, wenn Sie zum ersten Mal einen Befehl zum Hinzufügen eines Submoduls eingeben, und es wird automatisch zu dem Teil hinzugefügt, den Sie später hinzufügen sollten.
config/initializers/sorcery.rb
Rails.application.config.sorcery.submodules = [:user_activation, :Andere Submodule...]
Wenn Sie gemäß dem Lernprogramm fortfahren, werden Sie später aufgefordert, das obige : user_activation
hinzuzufügen. Wenn dies jetzt beschrieben wird, können Sie nicht fortfahren. Löschen Sie es daher einmal.
config/initializers/sorcery.rb
Rails.application.config.sorcery.submodules = [(:Andere Submodule)...]
Endlich kann ich migrieren.
$ rails db:migrate
Wenn Sie danach gemäß dem Tutorial fortfahren, gibt es eine Anweisung zum Hinzufügen von : user_activation
. Fügen Sie sie dort hinzu und lösen Sie sie.