Rails 3 с Devise для аутентификации - Как мне вручную создать пользователя? - PullRequest
34 голосов
/ 05 января 2011

Я хотел бы вручную создать новые User s, не заставляя их проверять свой адрес электронной почты.

Идея состоит в том, чтобы позволить существующим пользователям автоматически добавлять своих друзей, не требуя их регистрации. Это имеет смысл для бизнес-кейса, над которым я работаю.

Как этого можно достичь с помощью Devise?

Ответы [ 2 ]

50 голосов
/ 05 января 2011

Метод skip_confirmation! доступен для любой модели confirmable.

@user = User.new params[:user]
@user.skip_confirmation! # Sets confirmed_at to Time.now, activating the account
@user.save

Хотя учетная запись пользователя будет активирована.Если вы этого не хотите, продолжайте чтение.

Devise использует условные обратные вызовы для генерации токена подтверждения и отправки электронного письма.Обратные вызовы будут вызываться, только если confirmation_required? вернет true.Переопределите его для вашей модели:

def confirmation_required?
  false
end

Однако метод active_for_authentication? всегда будет возвращать значение true, поскольку он принимает во внимание, требуется ли подтверждение или нет.Мы также должны переопределить это:

def active_for_authentication?
  confirmed? || confirmation_period_valid?
end

Таким образом, учетная запись останется неактивной, и подтверждение по электронной почте отправлено не будет.Вам нужно будет вручную активировать пользователя, позвонив confirm! на записи или просто установив confirmed_at на любую дату.

Это довольно взломано, но должно работать.

Для справки: Подтверждаемый.rb

9 голосов
/ 17 ноября 2013

Я просто хочу добавить для дальнейшего использования, что начиная с Devise 2.2 теперь доступен и метод skip_confirmation_notification!, который в основном делает все из поста Матеуса, не переопределяя методы в модели.

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