设计错误未定义方法`email'

问题描述 投票:0回答:2

我尝试调整我的

Devise
视图,并用用户名替换了电子邮件。当然,我已经通过用
initializers/devise.rb
替换所有出现的
:email
来调整
:username
。我调整了屏幕,一切正常,直到我尝试从数据库中删除字段
email

完成此操作后,我仍然可以使用新密钥(用户名)根据需要登录并创建帐户,但是,当尝试更新用户时,我收到此错误消息,指出电子邮件方法未定义。

我知道我缺少一个调用这个不存在的属性/方法的地方,但是,我不知道在哪里......

一些日志:

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'
ruby-on-rails ruby activerecord devise
2个回答
1
投票

只需调整用户模型添加以下内容:

def email_required? 错误的 结束

def email_changed? 错误的 结束


0
投票

对于发现此内容的任何人,我试图创建一个不通过电子邮件和密码进行身份验证的 Devise 用户类型。

如果您也有同样的情况,请从模型中删除以下内容: :可验证:数据库_可验证,

这两个人希望有一个电子邮件和密码来验证和验证。删除它们可确保不使用与其中任何一个相关的检查。

© www.soinside.com 2019 - 2024. All rights reserved.