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.
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.
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.