设计:不需要电子邮件
我不想要使用设备登录电子邮件。 我从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”。
- Rails,设计。 除非AdminUser,否则禁止用户操作
- Rails + Devise:如何覆盖before_filter“authenticate_user!”的重定向
- 调用Rails.application.routes.generate()或Rails.application.routes.recognize_path()时出现’RuntimeError:route set not finalized’
- 用Devise登录后重定向
- CarrierWave并resize到特定宽度
- Rails没有更新属性
- 独角兽陷入困境:刷新gem列表
- 在创建新卡之前,我是否可以检查卡片是否已经存在?
- 如何更改自定义rails生成器的源? (雷神)