2016-05-23 41 views
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' 
+0

您是否查看本指南? https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address 它涉及:更新Devise的参数杀菌剂,添加你的模型的attr_accessor,修改devise的身份验证密钥(config/init/devise.rb),以及其他步骤取决于你的设置 –

+0

问题是我从DB中删除了'email'字段。我很想调整一些东西,但不知道在什么地方...... –

回答

1

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

def email_required? false end

def email_changed? false end

相关问题