Sidekiq的回形针无法正常工作

时间:2015-05-21 03:10:54

标签: ruby-on-rails paperclip sidekiq

我创建了一个Sidekiq工作人员,它将使用Paperclip附件复制现有记录,但它似乎无法正常工作。

#controller
product = Product.find(2)
SuperWorker.perform_in(5.minutes, product.id)

#worker
class SuperWorker
  include Sidekiq::Worker
  def perform(product_id)
    product = Product.find(product_id)
    product.generate_clone
  end
end

#product model
...
has_attached_file :front_image, :styles => { :medium => "415x500>", :thumb => "100x100>" }, :default_url => "/assets/thumbnail-default.jpg"
validates_attachment_content_type :front_image, :content_type => ['image/png']

has_attached_file :back_image, :styles => { :medium => "415x500>", :thumb => "100x100>" }, :default_url => "/assets/thumbnail-default.jpg"
validates_attachment_content_type :back_image, :content_type => ['image/png']

def generate_clone
  new_product = self.dup
  new_product.front_image = self.front_image
  new_product.back_image = self.back_image
  new_product.save
end

当我在控制台中复制记录时,似乎工作就是为什么我很困惑为什么它不能在计划任务中工作。以下是我在rails控制台中的操作方法。

p = Product.find(2)
new_p = p.dup
new_p.front_image = p.front_image
new_p.back_image = p.back_image
new_p.save

这样可以正常工作,但在sidekiq工作人员中没有。

我希望你能说清楚我对这个问题做错了什么和/或我是否错过了什么。

谢谢。

Eralph

1 个答案:

答案 0 :(得分:0)

我通过不使用.dup函数

解决了这个问题
p = Product.find(2)
new_p = Product.new
new_p.field1 = p.field1
new_p.field2 = p.field2
...
new_p.front_image = p.front_image
new_p.back_image = p.back_image
new_p.save

完美无缺。我希望这可以帮助那些遇到问题的人。

感谢。