PD: レジスタの仕様コードはそのままにしますが、いくつかの違い (リクエスト、URL、ユーザー モデルのユーザー名パラメーター (これが、ログイン パラメーターとログイン リクエストを使用する理由です)) を除き、すべてを 1 つの spec.rb ファイルに作成しました。 …) https://medium.com/@mazik.wyry/rails-5-api-jwt-setup-in- minutes-using-devise-71670fd4ed03 に送信します。ケップはそれを念頭に置いてください。

概要

Devise ビューを調整して、電子メールをユーザー名に置き換えてみました。確かに、出現するすべての :email を :username に置き換えて、initializers/devise.rb を調整しました。画面を調整したところ、データベースからフィールドメールを削除しようとするまでは正常に動作していました。

これを行った後も、新しいキー (ユーザー名) を使用して必要に応じてログインしてアカウントを作成できますが、ユーザーを更新しようとすると、電子メール メソッドが定義されていないことを示すエラー メッセージが表示されます。

この存在しない属性/メソッドを呼び出す場所が不足していることは理解していますが、どこからかわかりません…

いくつかのログ:

NoMethodError in Devise::RegistrationsController#update
undefined method `email' for #<User...

Rails.root: /vagrant/src/projectX

Application Trace | Framework Trace | Full Trace
activemodel (4.0.1) lib/active_model/attribute_methods.rb:439:in `method_missing'
activerecord (4.0.1) lib/active_record/attribute_methods.rb:155:in `method_missing'
activemodel (4.0.1) lib/active_model/validator.rb:151:in `block in validate'
activemodel (4.0.1) lib/active_model/validator.rb:150:in `each'
activemodel (4.0.1) lib/active_model/validator.rb:150:in `validate'
activerecord (4.0.1) lib/active_record/validations/presence.rb:5:in `validate'
activesupport (4.0.1) lib/active_support/callbacks.rb:283:in `_callback_before_13'
activesupport (4.0.1) lib/active_support/callbacks.rb:377:in `_run__265703777__validate__callbacks'
activesupport (4.0.1) lib/active_support/callbacks.rb:80:in `run_callbacks'

解決策

以下を追加してユーザー モデルを調整する必要がありました。

def email_required? 間違い 終わり

def email_changed? 間違い 終わり