2015-11-05 89 views
1

我正在使用与轨道的太阳黑子。 我知道太阳黑子将使用after_commit钩子重新索引... 但如果after_commit失败,事务回滚,我想要保存的Account(ActiveRecord::Base)被删除。如何异步调用after_commit(由太阳黑子注入)

我想使用sidekiq,perform_async来调用after_commit钩子,但不知道我该怎么做。

有什么建议吗?

回答

0
module Reindex 
     extend ActiveSupport::Concern 

     def async_reindex 
     AsyncIndexJob.perform_later(self.class.to_s, self.reload.id) 
     end 

     included do 
     after_save :async_reindex 
     end 
    end 

    class AsyncIndexJob < ActiveJob::Base 
     queue_as :index 

     def perform(*args) 
     obj = args[0].constantize.find_by_id(args[1]) 
     if obj 
      Sunspot.index obj 
      Sunspot.commit 
     end 
     end 
    end 

1.include重新索引模块中的ActiveRecord ::基地

2.设置:auto_index中=>假

3.所有完成

AsyncIndex