2011-10-15 57 views
3

我正在查看Kissmetrics(分析应用程序)JS API文档,并且他们有一个“标识”方法,可让您告诉Kissmetrics有关用户的信息。这里是他们的文件说什么:在用户注册时执行JS代码/使用Rails + Devise登录

我们建议你打电话确定在两种情况下:

当用户成功签约 当用户成功登录,无论是通过cookie或者通过登录页面

实现该目标的最佳方法是什么?如何检测用户刚刚注册或登录?

回答

7

让我们一分为二的问题:注册并登录

在新用户注册了你的应用程序只需添加在你after_createUser模型可以检测。类似于

class User < ActiveRecord::Base 
    after_create :register_hook 

    def register_hook 
    # your code here 
    end 
end 

检测用户登录时有点肮脏。设计修改用户在登录时的user.current_sign_in_at属性,以便您可以在用户模型中添加before_save钩子并检查current_sign_in_at属性是否已更改。它应该是这样的:

class User < ActiveRecord::Base 
    before_save :login_hook, :if => current_sign_in_at_changed? 

    def login_hook 
    # your code here 
    end 
end 

一旦你在/注册检测标志的权利回调,你可以创建一个信息一个cookie,并从JavaScript的阅读或写的User一个辅助方法模型,写这样的事情在你的布局:

<% if current_user.just_signed_in %> 
    <script type="text/javascript"> 
    // Your sign in stats code here 
    </script> 
<% end %> 

<% if current_user.just_signed_up %> 
    <script type="text/javascript"> 
    // Your sign up stats code here 
    </script> 
<% end %> 

按照这种方式,完整的模型应该是:

class User < ActiveRecord::Base 
    after_create :register_hook 
    before_save :login_hook, :if => current_sign_in_at_changed? 

    attr_accessor :just_singed_up, :just_signed_in 

    def register_hook 
    @just_signed_up = true 
    end 

    def login_hook 
    @just_signed_in = true 
    end 
end 
+0

这是有道理的,非常感谢! – Sacha

+0

这不起作用(我只是试图使用注册部分)。你碰巧知道如何让它在当前版本中工作? – Brandon

+0

属性@just_signed_in不存储在数据库中。如果用户在注册后重定向,那么这个变量不会被设置。 –

相关问题