2011-10-15 45 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不存儲在數據庫中。如果用戶在註冊後重定向,那麼這個變量不會被設置。 –

相關問題