Подтвердите пользователя перед созданием - PullRequest
0 голосов
/ 03 марта 2012

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

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

Как мне поступить?

Если мой текущий код необходим, я могу предоставить.

У меня есть это в моем контроллере / создать в данный момент:

def create @user = User.new (params[: user])

respond_to do |format|
  if @user.save
    Notifier.user_created(@user).deliver
    session[:user_id] = @user.id
    format.html { redirect_to @user, notice: 'User was successfully created.' }
    format.json { render json: @user, status: :created, location: @user }
  else
    format.html { render action: "new" }
    format.json { render json: @user.errors, status: :unprocessable_entity }
  end
end
end

Спасибо.

1 Ответ

4 голосов
/ 03 марта 2012

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

Я бы рекомендовал использовать дополнительное поле в вашей пользовательской таблице, которое называется что-то вроде confirmed. Инициализируйте его на false, а затем на форме подтверждения просто найдите пользователя и измените confirmed на true.

Это позволит вам быстро определить, подтвердил ли пользователь себя, и использовать его для принятия решения, например, разрешено ли ему входить в систему.

Что касается людей, которые никогда не подтверждают тему, вы пишете задание на рейк, которое запускается каждые 5 дней или около того, и просто удаляете всех пользователей, которые еще не подтвердили себя, используя что-то вроде resque_scheduler или задания cron.

Надеюсь, это начало вашего решения.

...