gpt4 book ai didi

ruby-on-rails-3 - 如何将 mixpanel-ruby 与 Devise 集成?

转载 作者:行者123 更新时间:2023-12-01 12:41:45 25 4
gpt4 key购买 nike

我正在努力将 mixpanel-ruby 与 Devise 集成。我有一个新手问题,我应该在哪个函数中包含跟踪逻辑?

例如,为了跟踪成功登录,我应该覆盖 SessionsController#create 还是 after_sign_in_path_for(resource)

如果覆盖创建,我应该在 create 函数中插入代码还是以某种方式利用 block

  def create
self.resource = warden.authenticate!(auth_options)
set_flash_message(:notice, :signed_in) if is_flashing_format?
sign_in(resource_name, resource)
yield resource if block_given?
<<< insert mixpanel tracking code >>>
respond_with resource, location: after_sign_in_path_for(resource)
end

最佳答案

您提出的任何方法都可行。哪种方法最好是一个见仁见智的问题,在很大程度上取决于您和您的团队的偏好。跟踪代码所需的参数也可能表明一种方法比另一种方法更可取。

也就是说,这是我的想法:

  • 我不建议覆盖 after_sign_in_path_for(resource)。我会考虑在您希望返回的 url 有点像 side effect 的方法之上添加混合面板跟踪。 ,我喜欢避免的事情。

  • 对我来说稍微好一点的是覆盖 SessionsController#create,因为我发现在此处添加跟踪行为并不奇怪。这可能是以下的一些变体:

    class YourController < Devise::SessionsController
    def create
    super
    track_sign_in(this.resource) if signed_in?
    end

    # or taking advantage of the block
    def create
    super do |resource|
    track_sign_in(resource) if signed_in?
    end
    end

    private
    def track_sign_in(resource)
    # yada yada
    end
    end
  • 总的来说,我更喜欢使用过滤器,因为我认为这是一种在 Controller 操作之上添加切向行为的更自然的方式。

    class YourController < Devise::SessionsController
    # or after_action in Rails 4+
    after_filter :track_sign_in
    end

任何解决方案都涉及覆盖 Devise 提供的某些方面,因此在我看来,选项之间的差异非常微不足道。

关于ruby-on-rails-3 - 如何将 mixpanel-ruby 与 Devise 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23889082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com