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

时间:2016-05-23 03:16:47

标签: ruby-on-rails ruby activerecord devise

我尝试调整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'

1 个答案:

答案 0 :(得分:1)

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

def email_required?     假   结束

def email_changed?     假   结束