2013-01-29 4 views
1


Я просматриваю примеры активации электронной почты на рельсах, и большинство примеров имеют столбец для активации токена и подтверждены в их таблице пользователей. Я не уверен, но я не думаю, что это хорошая идея, так как при активации пользователя почти обе эти колонки кажутся пустой тратой. То, как я думал о активации, было иметь отдельную модель под названием Activation, которая была бы have_one :user ассоциацией ONE-WAY, и я бы поставил роль пользователя на моем сайте как «PENDING» или что-то подобное. В таблице активации будет храниться токен активации для каждого пользователя. Затем будет сгенерирована ссылка с токеном активации, и пользователю будет отправлено электронное письмо, содержащее что-то вроде www.mysite.com/activate?token='some_really_long_hash'. После нажатия ссылки на роль моего пользователя будет установлено значение «ЧЛЕН» или что-то подобное. Кажется ли это хорошей идеей? Я не могу представить себе никаких ловушек активации. Предложения? Комментарии?Email Activation in rails

ответ

2

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

Я думаю, что State Machine Plugin может быть типом подхода, который вы хотите выполнить. Очевидно, это может быть больше, чем вы ищете, но подход будет таким же.

также проверить эти сообщения:

удачи!

1

Самый простой подход - создать случайный токен и сохранить его в столбце пользователя или записи участника. Он не должен быть «действительно длинным», 20 случайных символов будут достаточными, так как вероятность угадать настолько тонкая, что этого никогда не произойдет.

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

Обычно пользователь переключается на «проверенный» или что-то в своем роде, флаг состояния, хранящийся в отдельном столбце. Это сохраняет их первоначальный тип членства, который может быть одним из многих значений. Вот почему вы часто видите поля validated_at или поля banned_until.