[英]Execute JS code on user sign up/sign in with Rails + Devise
我正在查看Kissmetrics(分析應用程序)JS API文檔,他們有一個“識別”方法,可以讓您告訴Kissmetrics有關用戶的信息。 以下是他們的文檔所說的內容:
我們建議您在兩種情況下調用身份識別:
用戶成功注冊時用戶通過cookie或登錄頁面成功登錄
實現這一目標的最佳方法是什么? 如何檢測用戶剛剛注冊或登錄?
讓我們將問題分成兩部分:注冊並登錄。
您可以檢測新用戶何時在您的應用中注冊,只需在您的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 %>
<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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.