2015-05-21 3 views
0

Я создал работника Sidekiq, который будет дублировать существующую запись с приложением для скрепки скрепки, но, похоже, она не работает.Скрепка с Sidekiq не работает

#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

ответ

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 

отлично работает. Надеюсь, это поможет любому, у кого есть проблемы с этим.

Спасибо.

Смежные вопросы