Сброс переменной сеанса - не уверен, где это происходит - PullRequest
0 голосов
/ 19 февраля 2012

Я устанавливаю 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 ]

3 голосов
/ 19 февраля 2012

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

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

  protect_from_forgery
0 голосов
/ 20 февраля 2012

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

См. Субдомен не работает в Rails 2.3 и Rails 3 в Heroku с / без собственного домена?

...