【问题标题】:Sidekiq undefined method for stringSidekiq 未定义的字符串方法
【发布时间】:2015-10-08 15:43:18
【问题描述】:

这就是我所说的:

UpdateRatingAndCountWorker.perform_async(133)

这是我的工人:

# app/workers/update_rating_and_count_worker.rb
class UpdateRatingAndCountWorker
  include Sidekiq::Worker

  def perform(review_id)
    review = Review.find(review_id.to_i)
    review.style.update_average_rating!
  end
end

这是错误:

"NoMethodError: undefined method `style' for \"#<Review:0x00000005bef438>\":String"

【问题讨论】:

    标签: ruby-on-rails sidekiq


    【解决方案1】:

    在错误消息中,变量review.style 的类型似乎是String。

    由于您还没有发布模型Review 的代码,我只能猜测,但应该是这样吗

    # app/workers/update_rating_and_count_worker.rb
    class UpdateRatingAndCountWorker
      include Sidekiq::Worker
    
      def perform(review_id)
        review = Review.find(review_id.to_i)
        review.update_average_rating!
      end
    end
    

    【讨论】:

    • 您好,感谢您的回答。我正在传递一个 ID 并根据该 ID 查找评论。评论属于风格。由于某种原因,评论对象似乎是一个字符串,并且无法在工作人员中调用其关联?
    • 嗯,听起来很奇怪,如果您尝试在控制台中运行 perform 内的代码,它会起作用吗?
    【解决方案2】:

    重启 Sidekiq 对我有用,它在我的模型中采用了新方法

    【讨论】:

      猜你喜欢
      • 2015-01-29
      • 2014-06-11
      • 2014-06-01
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多