Разработать: не требуется электронная почта - PullRequest
16 голосов
/ 06 февраля 2012

Я не хочу запрашивать электронную почту для входа в систему с помощью устройства devise. Я удалил электронную почту из config / initializers / devise.rb:

config.authentication_keys = [ :login ]

и добавил это к моей модели пользователя:

def email_required?
  false
end

Тем не менее, я получаю эту ошибку при попытке сохранить пользователя:

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

Должен ли я что-то изменить в процессе миграции?

Ответы [ 4 ]

30 голосов
/ 02 августа 2013

В некоторых ссылках говорится, что вы не должны удалять :validatable, поскольку это приведет к удалению проверок пароля .

В моем случае я удалил столбец email из моих пользователей в базе данных, и устройство devise начало падать. Я добавил это:

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

def email_changed?
  false
end

и все заработало нормально.

17 голосов
/ 06 февраля 2012

Похоже, что поле электронной почты установлено в базе данных как "not NULL" или "Allow Null" в false. И вы получаете ошибку непосредственно из базы данных. Предполагая, что ваша пользовательская модель называется user, вам нужно добавить следующую миграцию, чтобы исправить это:

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

Документация: http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_column

9 голосов
/ 15 октября 2012

Дополнительно к удалению «обязательных» из: столбца электронной почты необходимо удалить «: проверяемый» из модели пользователя.

0 голосов
/ 30 июня 2019

Если проблема заключалась в том, что рассматриваемая служба не предоставляла вам электронное письмо, это немного чище решения:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...