会话变量重置 - 不确定它发生的位置

时间:2012-02-19 19:47:49

标签: ruby-on-rails kissmetrics

我正在我的rails应用程序上安装Kissmetrics,方法是将事件存储在会话变量中,然后将它们传递到后续页面上的kissmetrics javascript代码中。除了尝试跟踪创建的帐户之外,此方法效果很好。似乎当我将帐户创建的事件存储在我的会话变量中时它工作正常,但是当下一页加载时,会话变量就消失了。我把调试器放在那里试图找到它被删除的地方,但似乎什么都没有。 km_log_event是一种将字符串存储在名为km_events的会话变量中的方法。这是我的代码:

accounts_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
...

sessions_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 个答案:

答案 0 :(得分:3)

无效的csrf令牌会重置会话。这会发生吗?

您可以通过从控制器中删除以下内容(通常在ApplicationController中)

来轻松测试
  protect_from_forgery

答案 1 :(得分:0)

我认为这是在您尝试在子域之间共享会话时发生的。要实现这一点,您必须进行一些配置。

参考Subdomain Session Not Working in Rails 2.3 and Rails 3 on Heroku with/without a Custom Domain?