Особенность: Пользователь обновляет свой адрес электронной почты
Есть ли канонический способ создать функцию "обновления электронной почты" поверх драгоценного камня Clearance?
Чтобы объяснить это: я хочу, чтобы вошедшие в систему пользователи могли посещать сайт и обновлять адрес электронной почты, связанный с ее учетной записью.
Есть много информации о создании функции "изменить пароль", но ничего об изменении электронной почты. Я хотел убедиться, что ничего не пропустил, прежде чем изобретать колесо.
2 ответа
Насколько я знаю, нет канонического пути. Я думаю, что самый простой способ справиться с этим - сбросить current_user.confirmed_at
когда пользователь меняет свой адрес электронной почты. Примерно так должно работать:
class User < ActiveRecord::Base
before_update :reset_confirmation_on_email_change
private
def reset_confirmation_on_email_change
self.confirmed_at = nil if email_changed?
end
end
Остальное должно быть довольно простым, как редактирование чего-либо еще. Возможно, вы также захотите, чтобы они подтвердили свой пароль при изменении адреса электронной почты, это будет похоже на требование старого пароля при смене пароля.
Оформите драгоценный камень 'Devise'... очень полезный для логинов пользователей и обновления паролей и электронных писем. Делает создание страницы входа в систему легким, наряду с регистрацией пользователей в базе данных.