我正在我的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
答案 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?