设计:不需要电子邮件

时间:2012-02-06 19:16:01

标签: ruby-on-rails devise

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

config.authentication_keys = [ :login ]

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

def email_required?
  false
end

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

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

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

4 个答案:

答案 0 :(得分:30)

有些参考文献表示您不应删除:validatable,因为它会删除password validations

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

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

def email_changed?
  false
end

它运作正常。

答案 1 :(得分:17)

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

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

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

答案 2 :(得分:9)

除了从:email列中删除“required”之外,您还需要从用户模型中删除“:validatable”。

答案 3 :(得分:0)

如果问题是服务中的问题未向您提供电子邮件,则此解决方案较为干净:

https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview#user-didnt-allow-email-permissions