#ruby-on-rails #authentication #devise #confirmation #confirmation-email
#ruby-on-rails #аутентификация #разработка #подтверждение #подтверждение -электронное письмо
Вопрос:
Я использую Devise для регистрации сайта с помощью confirmable. Однако у меня есть две разные роли для этого сайта. Первая роль — это «основная» роль, которая использует обычную процедуру регистрации Devise. Предполагается, что учетные записи со второй ролью создаются после того, как исходный пользователь подтвердит свою учетную запись, войдет в систему в первый раз и сохранит определенную модель. Например, если пользователь регистрируется на сайте (как тип роли 1), он получает электронное письмо с подтверждением от Devise в обычном режиме. Затем они переходят по ссылке подтверждения, подтверждают свою учетную запись, а затем заполняют форму, где они указывают некоторых друзей, которые также должны получить учетные записи. Друзья имеют тип роли 2, и они должны получать электронное письмо с подтверждением, отличное от первоначального пользователя, который зарегистрировал своих друзей в учетной записи. Учетные записи для друзей создаются при сохранении формы, заполненной исходным пользователем. Кроме того, пользователь может редактировать и добавлять новых друзей позже, поэтому учетные записи, возможно, также потребуется создать методом обновления соответствующей формы / объекта, и этим новым пользователям нужно будет отправить правильное электронное письмо. Для ясности, я не хочу пропускать подтверждение — я просто хочу отправлять разные электронные письма с подтверждением пользователю в зависимости от их ролей. Я не могу понять, как правильно с этим справиться. Если я попытаюсь создать учетные записи друзей в коде, когда форма сохраняется с помощью User.new, вызывающего user.skip_confirmation! автоматически подтвердит их. Однако я не хочу, чтобы кто-либо подтверждался автоматически — я просто хочу выбрать другое настраиваемое электронное письмо с подтверждением для отправки в зависимости от различных условий. Может ли кто-нибудь указать мне правильное направление?
Ответ №1:
Ознакомьтесь с send_on_create_confirmation_instructions
методом и комментариями к нему в вашем /gems/devise-x.x.x/lib/devise/models/confirmable.rb