簡體   English   中英

在用戶注冊/使用Rails + Devise登錄時執行JS代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM