Ruby on Rails + Devise + Существующая таблица пользователей == Нет confirm_tokens

У меня есть новая система рельсов, которую я создаю. Я нахожусь в процессе настройки устройства для аутентификации. Моя проблема в том, что у всех моих существующих пользователей нет токенов подтверждения, и я не могу найти способ передать им токены. Я ожидал, что при входе в систему пользователю будет предложено повторно отправить токен, но это не так. Кроме того, я не могу понять, как изменить процесс аутентификации, чтобы добавить эту ссылку, когда пользователь успешно проходит аутентификацию.

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


person Altonymous    schedule 23.08.2011    source источник
comment
Я нашел настройку для confirm_within в разделе config/initializers/devise.rb. Я не уверен, должен ли я установить ее здесь или мне следует попытаться установить ее где-нибудь в файле среды. Однако это не работает для меня. Я предполагаю, что это потому, что для пользователя нет подтверждения_токена. Но, надеюсь, это поможет другим.   -  person Altonymous    schedule 24.08.2011


Ответы (2)


Это связано с подтверждаемым вариантом разработки. Здесь вы должны сделать две вещи. Сначала вы должны установить период времени, в течение которого вы разрешаете ответить на подтверждение.

Чтобы установить период времени, который пользователь должен подтвердить, вам нужно настроить инициализатор устройства и раскомментировать одну строку:

# config/initializers/devise.rb
config.confirm_within = 2.days

Затем вам нужно отправить письмо с подтверждением вручную (эта функция также создаст токен подтверждения, если он не существует), это можно сделать с помощью консоли или в скрипте:

# in console
User.find(1).send_confirmation_instructions

Я бы проверил это, а затем написал следующий скрипт:

# script.rb
User.all.each do |user|
  user.send_confirmation_instructions
end

Это очень медленный процесс, если у вас тысячи пользователей, но вы справитесь с этой задачей.

Проверьте это: Подтверждено

person ersamy    schedule 23.08.2011
comment
Это включено, но это не тот токен, о котором я говорю. Я говорю о подтверждении после регистрации пользователя. У существующих пользователей не будет токена подтверждения, и они не смогут войти в систему. Если я попытаюсь установить период времени, в течение которого они могут войти в систему без подтверждения, это не сработает. Поэтому я в недоумении, как я могу создать для них подтверждающие_токены и в то же время уведомить их о том, что им нужно подтвердить свою учетную запись. - person Altonymous; 24.08.2011
comment
Я неправильно понял вопрос в первый раз... Я исправил свой ответ! - person ersamy; 24.08.2011

Просто подтвердите своих существующих пользователей вот так

User.all.each do |user| user.confirm! end

в консоли или в скрипте.

person Michael Kuhl    schedule 09.09.2011
comment
Не думайте, что он хотел автоматически подтвердить всех пользователей. Я думаю, он хотел, чтобы они подтверждали свои электронные письма. - person Aaron; 25.05.2015