Изменить подтверждение с помощью Devise - PullRequest
0 голосов
/ 21 декабря 2010

Я хотел бы установить логический флаг при подтверждении пользователя через Devise.По сути, я хочу сделать пользователя активным.Однако Devise просто подтверждает учетную запись и регистрирует ее.

Как создать обратный вызов некоторых типов, чтобы обновить мою запись пользователя, чтобы при подтверждении этого «активного» столбца было установлено значение true?

Любая помощь очень ценится!

Ответы [ 3 ]

1 голос
/ 21 декабря 2010

Предполагая, что ваша модель аутентификации называется User, вы можете сделать это:

class User < ActiveRecord::Base
  def active?
    super and (not self.confirmed_at.nil?)
  end
end

При этом Devise не будет входить в систему пользователя, но будет ждать, пока пользователь не подтвердит (поле confirmed_at будет отличным от NULL, если пользователь подтвердил)

0 голосов
/ 19 мая 2011

Это в основном комментарий к Ответу Турадга ниже.Если вы последуете этому совету (что я и сделал), у вас возникнет небольшая проблема, когда пользователи попытаются использовать недопустимый маркер подтверждения.Вы получите «Отсутствует шаблон пользователей / подтверждений / новых».Здесь Devise :: ConfirmationsController отправляет вам на devise / Подтверждения / Новый , чтобы сообщить вам, что токен недействителен и позволяет отправить еще один.В представлении Devise я решил обойти эту незначительную проблему, переместив файл devise / подтверж-

0 голосов
/ 18 февраля 2011

Что касается вашего конкретного вопроса, вам лучше реализовать атрибут active?, если confirmed_at равен нулю, как предлагает Zabba.

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

class Users::ConfirmationsController < Devise::ConfirmationsController

  def show
     # let Devise actually confirm the user
    super
    # if they're confirmed, it will also log them in
    if current_user then
      # and you can do whatever you want with their record
      current_user.active = true
    end
  end

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