2015-11-05 85 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