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? 間違い 終わり