Обновление: на этот вопрос был дан ответ (см. Ниже). Я оставлю это на случай, если кто-то сможет выиграть в будущем.Authlogic отправляет неправильный код активации
Я пытаюсь получить по электронной почте подтверждение работы над Authlogic с помощью Rails 3. http://github.com/matthooks/authlogic-activation-tutorial
аутентификация работает и активация электронная почта генерируется и отправлена, каждый из которых содержит скоропортящийся маркер, но скоропортящиеся жетоны неверны, так как они не совпадают с сохраненными в записи пользователя.
При следующем токен в электронной почте, я получаю: Исключение в ActivationsController # создать
Примечание: Когда я вручную ввести правильный маркер из таблицы в URL, он проверяет и перенаправляет как предполагается к. Поэтому единственная проблема заключается в том, что генерируемый скоропортящийся токен не совпадает с тем, который сохраняется.
# UserMailer
class UserMailer < ActionMailer::Base
default :from => "[email protected]"
def registration_confirmation(user)
@user = user
mail(:to => "#{user.login} <#{user.email}>", :subject => "Registered")
end
def activation_instructions(user)
subject "Activate Your Account"
from "[email protected]"
recipients user.email
sent_on Time.now
body :account_activation_url => activate_url(user.perishable_token)
end
def welcome(user)
subject "Welcome to the site!"
from "[email protected]"
recipients user.email
sent_on Time.now
body :root_url => root_url
end
end
# E-mail itself:
To activate, click here: <%= @account_activation_url %>
ошибка происходит на линии 5, где система пытается и не может найти пользователя по лексема:
class ActivationsController < ApplicationController
before_filter :require_no_user
def create
@user = User.find_by_perishable_token(params[:activation_code], 1.week) || (raise Exception)
raise Exception if @user.active?
if @user.activate!
flash[:notice] = "Your account has been activated!"
UserSession.create(@user, false) # Log user in manually
@user.deliver_welcome!
redirect_to home_url
else
render :controller => "welcome", :action => "linklogin"
end
end
end