请求对象被识别为String

时间:2014-10-09 16:02:40

标签: ruby-on-rails controller sidekiq

我的sidekiq worker的请求对象被识别为字符串。

application_controller.rb

  def log_variant
    @request = request
    AnalyticsWorker.perform_async(@request)
  end

variant_worker.rb

class VariantWorker

  include Sidekiq::Worker

  def perform(current_request)
    variant = current_request.variant.join
    puts variant
  end  
end

这是错误

undefined method `variant' for "#<ActionDispatch::Request:0x00000101b83510>":String

我将请求对象存储在实例变量中,所以我应该能够调用变量方法吗?请求对象是否太复杂而无法执行此sidekiq操作?

1 个答案:

答案 0 :(得分:1)

在后台,Sidekiq正在将该参数序列化为Redis。我猜Redis正在把它变成一个字符串。通常,您希望在该参数中传递最小数据,如标记为here