设计:替换'电子邮件'用于登录的替代方案

时间:2014-07-14 22:11:46

标签: ruby-on-rails devise

我尝试使用Sublime的“替换所有文件”功能在整个应用程序中用email替换accountnumber

我已重置并重新迁移数据库,但是,在注册时我仍然会收到以下错误:

undefined method `email' for #<Account:0x415b690>

然后是以下参数

    {"utf8"=>"✓",
 "authenticity_token"=>"2qqA7dx99hx+VqkZGDmySNJd+2Fzxuanegy1ysrpD30=",
 "account"=>{"accountnumber"=>"1307",
 "password"=>"[FILTERED]",
 "password_confirmation"=>"[FILTERED]"},
 "commit"=>"Sign up"}

之前有没有人遇到这种困难?

1 个答案:

答案 0 :(得分:0)

使用Devise,惯例是使用&#39; email&#39;登录。您正在使用gem(设计),因此并非所有代码都在您的项目中可见,并且搜索和替换以替换&#39; accountnumber&#39;对于电子邮件&#39;是不足够的。您必须通过更改帐户模型来重新配置Devise。

务必更改电子邮件&#39;来自&#39; accountnumber&#39;在迁移Devise创建(&#39; DeviseCreateUsers&#39;)并运行rake db:migrate:reset

更改您的帐户模型:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable,  
         :authentication_keys => [:accountnumber]

  def email_required?
    false
  end

  def email_changed?
    false
  end

end

确保您已生成设计视图并更改了电子邮件&#39;来自&#39; accountnumber&#39;在视图文件中。

我已经写了Rails Devise Tutorial,可以帮助您了解Devise的工作原理。