设计:将“电子邮件”替换为替代登录

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

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

 undefined method `email' for # 

然后是以下参数

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

以前有人有这个困难吗?

使用Devise,惯例是使用’email’进行登录。您使用的是gem(Devise),因此并非所有代码都在您的项目中可见,并且搜索和替换将’accountnumber’替换为’电子邮件’还不够。 您必须通过更改帐户模型来重新配置Devise。

务必在创建的迁移Devise(’DeviseCreateUsers’)中将’email’更改为’accountnumber’并运行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 

确保您已在视图文件中生成了Devise视图并将“email”更改为“accountnumber”。

我编写了一个Rails设计教程 ,可以帮助您了解Devise的工作原理。