【问题标题】:Rails: Accessing Controller Variables in a SweeperRails:在 Sweeper 中访问控制器变量
【发布时间】:2012-01-18 03:25:18
【问题描述】:

所以我这里有一些关于 Rails Sweeper 的代码需要修改:

class UserTrackingSweeper < ActionController::Caching::Sweeper
  observe User

  def after_update(user)
    return if user.nil? || user.created_at.nil? #fix weird bug complaining about to_date on nil class
    return if user.created_at.to_date < Date.today || user.email.blank?

    user.send_welcome_email if user.email_was.blank?
  end

  #use sweeper as a way to ingest metadata from the user access to the site automatically
  def after_create(user)
    begin
      if !cookies[:user_tracking_meta].nil?
        full_traffic_source = cookies[:user_tracking_meta]
      else
        if !session.empty? && !session[:session_id].blank?
          user_tracking_meta = Rails.cache.read("user_meta_data#{session[:session_id]}")
          full_traffic_source = CGI::unescape(user_tracking_meta[:traffic_source])
        end
      end
      traffic_source = URI::parse(full_traffic_source).host || "direct"
    rescue Exception => e
      Rails.logger.info "ERROR tracking ref link. #{e.message}"
      traffic_source = "unknown"
      full_traffic_source = "unknown"
    end

    # if I am registered from already, than use that for now (false or null use site)
    registered_from = user.registered_from || "site" 
    if params && params[:controller]
      registered_from = "quiz" if params[:controller].match(/quiz/i)
      # registered_from = "api" if params[:controller].match(/api/i)
    end


    meta = {
      :traffic_source => user.traffic_source || traffic_source,
      :full_traffic_source => full_traffic_source,
      :registered_from => registered_from,
      :id_hash => user.get_id_hash
    }
    user.update_attributes(meta)
  end

end

问题是我注意到似乎无法在清扫器中访问 c​​ookie 和参数散列,但在我们公司的某些集成环境中似乎很好。但它在我的本地机器上不起作用。所以我的问题是:

  1. 如何在 Sweeper 中访问参数/cookie?
  2. 如果不可能,你会怎么做?

谢谢

【问题讨论】:

    标签: ruby-on-rails caching cookies parameters sweeper


    【解决方案1】:

    我确信你可以在缓存清扫器中使用会话变量,所以如果有任何东西放在那里你需要的任何东西,你就可以设置

    【讨论】:

      猜你喜欢
      • 2012-12-06
      • 1970-01-01
      • 2016-02-17
      • 2011-01-26
      • 2023-03-10
      • 1970-01-01
      • 2017-09-22
      • 2011-08-07
      • 1970-01-01
      相关资源
      最近更新 更多