让我们将问题分为两部分:注册和登录。
您可以通过在User
模型中添加after_create
钩子来检测新用户何时在您的应用程序中注册。例如:
class User < ActiveRecord::Base
after_create :register_hook
def register_hook
end
end
检测用户登录有点棘手。当用户登录时,Devise会修改用户的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
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