Подтвердить что ты не робот

Подтверждение электронной почты в Rails без использования существующих генов/плагинов аутентификации

Я работаю над этой службой оповещений в Rails. И действительно, все, что мне нужно сделать, - это когда пользователь подписывается, отправьте электронное письмо с подтверждением пользователю. И после подтверждения от пользователя активируйте пользователя. Я пробовал играть с учебным пособием по активации электронной почты Matt Hooks Authlogic, но он действительно нигде не ведет. Итак, любые идеи, как я могу это сделать с минимальной суетой? Благодарю!

UPDATE

Итак, как я получил работу, чтобы выполнить эту работу для меня:

  • Установите драгоценный камень.

  • Создайте миграцию для создания подтвержденных полей.

  • Укажите

    изобретать: подтверждать в вашей модели.

  • Создайте метод подтверждения в соответствующем контроллере (и маршрут для этого метода), который обновит атрибут confirm_at соответствующей модели.

  • Генератор разработки создает для вас несколько просмотров, один из которых - confirm_instructions.html.erb. Настройте путь там.

Я использовал Rails 2.3.2, и я использовал этот метод вместе с аутентификацией Authlogic, и он работал хорошо. Я планирую полностью переключиться на разработку.

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

4b9b3361

Ответ 1

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

  • Создайте в пользовательской модели атрибуты "подтверждения" и "подтвержденные".
  • Создайте новый контроллер на вашем пользовательском контроллере, который ожидает идентификатор пользователя и код подтверждения, ищет пользователя и затем проверяет, соответствует ли код в параметре коду, хранящемуся в БД. Если это так, он очищает код и устанавливает confirm = true.
  • Создайте маршрут, который отображает, например. /users/ 1/confirm/code к вашему новому методу контроллера.
  • Создайте шаблон ActionMailer для электронной почты, которую вы хотите отправить. Это должно принять пользователя как параметр и использовать код подтверждения пользователя для отправки почты, содержащей ссылку на новый маршрут.
  • Создайте наблюдателя для своей модели пользователя. Если запись создана или адрес электронной почты изменен, затем сформируйте случайный код подтверждения, установите его в модель и очистите флаг подтверждения. Затем активируйте ActionMailer.
  • Создайте вспомогательный метод, который позволяет представлениям проверять, подтвержден ли текущий пользователь.
  • Используйте этот метод для включения/отключения функциональности по мере необходимости. Не забудьте защитить свои методы контроллера, а также логику представления.

Ответ 2

Вы также можете использовать области для выбора пользователей.

class User < ActiveRecord::Base
  scope :certified, where(:certified => true)
end

И затем в вашем коде:

@user = User.certified.find_by_username(foo)

Ответ 3

Devise - это еще один отличный камень для проверки подлинности, который поставляется с встроенной активацией электронной почты, возможно, вы могли бы отвести его.