Сбрасывание переменной сеанса - не уверен, где это происходит

Я устанавливаю Kissmetrics в моем приложении rails, сохраняя события в переменной сеанса, а затем передавая их в javascript-код kissmetrics на следующей странице. Этот метод отлично работает, за исключением попыток отслеживания создания учетных записей. Похоже, что когда я храню созданное в аккаунте событие в своей переменной сеанса, он работает нормально, но к тому времени, когда загружается следующая страница, переменная сеанса ушла. Я поставил там отладчик, чтобы попытаться найти, где он удаляется, но кажется, что ничего нет. km_log_event - это метод, который хранит строку в переменной сеанса, называемой km_events. Вот мой код:

account_controller/create ->

... 
if @account.save 
 log_event("Account", "Created", @account.name)
 km_log_event("Account Created")
 redirect_to(welcome_url(:subdomain => @account.subdomain)) 
 @user.activate!
 @user.add_connection(params[:connect_to])
 else
 render(:action => 'new', :layout => 'signup')
 end
...

session_controller/welcome ->

def welcome
 if current_account.new?
 # Create the session for the owner, the account is brand new
 current_account.user_sessions.create(current_account.owner, true)
 elsif current_account.users.last && current_account.users.last.created_at > 1.hour.ago
 current_account.user_sessions.create(current_account.users.last, true)
 end
 redirect_to embedded_invitations_path
 end

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

ОБНОВИТЬ:

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

module Accounts
 def self.included(controller)
 controller.helper_method :current_account
 end

 protected

 def current_account
 return @current_account if defined?(@current_account)
 @current_account = Account.find_by_subdomain!(current_subdomain)
 end
end
2 ответа

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

Обратите внимание, что сеанс поддомена не работает в Rails 2.3 и Rails 3 на Heroku с/без пользовательского домена?


Недопустимый токен csrf будет сброшен. Может ли это случиться?

Вы можете легко это протестировать, удалив из своего контроллера (обычно в ApplicationController) следующее:

protect_from_forgery

licensed under cc by-sa 3.0 with attribution.