[RUBY] Problem, dass db nicht migriert werden kann: Migration beim Hinzufügen von Sorcery-Submodulen

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.

Bis Sie das Problem getroffen haben

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.

Ursache

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.

Referenz

Sorcery/wiki/User-Activation

Recommended Posts

Problem, dass db nicht migriert werden kann: Migration beim Hinzufügen von Sorcery-Submodulen
[Rails] Die Ursache dafür, dass nicht gepostet werden konnte, war in form_with