在用户注册/使用Rails + Devise登录时执行JS代码

我正在查看Kissmetrics(分析应用程序)JS API文档,他们有一个“识别”方法,可以让您告诉Kissmetrics有关用户的信息。 以下是他们的文档所说的内容:

我们建议您在两种情况下调用身份识别:

用户成功注册时用户通过cookie或登录页面成功登录时

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

让我们将问题分成两部分:注册并登录。

您可以检测新用户何时在您的app中注册,只需在您的User模型中添加after_create挂钩。 就像是

 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 %>  <% end %> <% if current_user.just_signed_up %>  <% 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