【问题标题】:Devise error undefined method `email'设计错误未定义方法“电子邮件”
【发布时间】:2016-05-23 03:16:47
【问题描述】:

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

【问题讨论】:

  • 您查看过本指南吗? github.com/plataformatec/devise/wiki/… 它涉及:更新 Devise 的参数清理器,向模型添加 attr_accessor,修改 devise 的身份验证密钥(config/init/devise.rb)以及其他步骤,具体取决于您的设置
  • 关键是我从数据库中删除了“电子邮件”字段。我想调整一些东西,但不确定什么和在哪里......

标签: ruby-on-rails ruby activerecord devise


【解决方案1】:

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

def email_required? 错误的 结束

def email_changed? 错误的 结束

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 2016-04-20
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多