Мы используем authlogic, и мы хотим, чтобы учетная запись пользователя была создана, и пользователь вошел в систему на лету, когда пользователь заходит на определенные страницы. У нас есть функция, которую мы запускаем как before_filter для действий, где мы хотим, чтобы пользователь создавался на лету:
#
# Require user account, create an anonymous if no account
#
def require_user_or_create_anonymous
unless current_user
@user = User.new
@user.name = 'Anonymous'
@user.anonymous = 1
@user.crypted_password = ''
@user.password_salt = ''
@user.persistence_token = ''
@user.email = 'email'
@user.save false
@user_session = UserSession.new
end
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.record
end
Это работает для создания пользователя и входа в него. Однако мы обнаруживаем, что для его активации требуется другая загрузка страницы. Если это вызывается в before_filter для определенного действия, метод current_user просто возвращает nil в этом действии. Если страница затем перезагружается, current_user корректно возвращает объект пользователя.
Есть идеи, как это исправить?