I would like to NOT require email for signing in using devise. I removed email from config/initializers/devise.rb:
config.authentication_keys = [ :login ]
Additional to removing "required" from :email column you need to remove ":validatable" from user model.
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
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
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