设计:不需要电子邮件

我不想要使用设备登录电子邮件。 我从config / initializers / devise.rb中删除了电子邮件:

config.authentication_keys = [ :login ] 

并将此添加到我的用户模型:

 def email_required? false end 

但是,当我尝试保存用户时,我收到此错误:

 SQLite3::SQLException: users.email may not be NULL 

我想改变迁移中的某些内容吗?

看起来您将数据库中设置的电子邮件字段设置为“not NULL”或“Allow Null”为false。 并且您直接从数据库中收到错误。 假设您的用户模型被称为用户,您需要添加以下迁移来修复:

 change_column :users, :email, :string, :null => true 

文档: http : //apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_column

一些引用说你不应该删除:validatable ,因为它会删除密码validation 。

就我而言,我从数据库中的用户中删除了列email ,并且设计开始崩溃。 我补充说:

 # app/models/user.rb def email_required? false end def email_changed? false end 

它运作正常。

除了从“电子邮件”列中删除“必需”之外,您还需要从用户模型中删除“:validatable”。