devise: not requiring email

前端 未结 4 1463
你的背包
你的背包 2021-01-01 15:31

I would like to NOT require email for signing in using devise. I removed email from config/initializers/devise.rb:

config.authentication_keys = [ :login ]


        
相关标签:
4条回答
  • 2021-01-01 15:41

    Additional to removing "required" from :email column you need to remove ":validatable" from user model.

    0 讨论(0)
  • 2021-01-01 15:52

    It looks like you have the email field set in the database as "not NULL" or "Allow Null" to false. And you are getting an error directly from the database. Assuming that your user model is called user you need to add the fallowing migration to fix that:

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

    Documentation: http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_column

    0 讨论(0)
  • 2021-01-01 15:53

    If the issue was that the service in-question wasn't providing an email to you, this is a bit cleaner of a solution:

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

    0 讨论(0)
  • 2021-01-01 16:03

    In my case, I removed the column email from my users in the database, and Devise started to crash. I added this:

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

    and it worked properly.

    Please note that removing :validatable would remove password validations. So some references say you shoudn't remove it.


    Tip: Add a simple comment above those lines explaining your motives. Those after you will be thankful

    0 讨论(0)
提交回复
热议问题