[RUBY] Problème de ne pas pouvoir db: migrer lors de l'ajout de sous-modules Sorcery

Lors de la création d'une fonction d'authentification avec Sorcery, j'installe un sous-module à chaque fois pour ajouter chaque fonction, mais je suis tombé en essayant de procéder selon le tutoriel officiel, donc je vais décrire la solution.

Jusqu'à ce que vous rencontriez le problème

Prenons l'exemple de l'ajout de la fonction d'activation utilisateur.

Tout d'abord, installez le sous-module

$ rails g sorcery:install user_activation  --only-submodules

Ensuite, le fichier de migration suivant sera créé.

[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

Et mon grand

$ rails db:migrate

Une erreur s'est produite ici!

rails aborted!
ArgumentError: To use user_activation submodule, you must define a mailer (config.user_activation_mailer = YourMailerClass).

Le message d'erreur dit "Si vous utilisez ce sous-module, écrivez un mailer!", Mais si vous le suivez, une autre erreur se produira et vous ne pourrez pas continuer.

Cause

Ce problème se produit lorsque vous tapez d'abord une commande pour ajouter un sous-module et qu'il est automatiquement ajouté à la partie que vous devez ajouter ultérieurement.

config/initializers/sorcery.rb


Rails.application.config.sorcery.submodules = [:user_activation, :Autres sous-modules...]

Si vous continuez selon le tutoriel, vous serez invité à ajouter plus tard : user_activation ci-dessus, mais si cela est décrit maintenant, vous ne pourrez pas continuer, supprimez-le une fois.

config/initializers/sorcery.rb


Rails.application.config.sorcery.submodules = [(:Autres sous-modules)...]

Enfin je peux migrer.

$ rails db:migrate

Après cela, si vous continuez selon le tutoriel, il y a une instruction pour ajouter : user_activation, alors ajoutez-le là et résolvez-le.

référence

Sorcery/wiki/User-Activation

Recommended Posts

Problème de ne pas pouvoir db: migrer lors de l'ajout de sous-modules Sorcery
[Rails] La cause de l'impossibilité de publier des messages était form_with