我正在使用带有轨道的太阳黑子。
我知道太阳黑子会使用after_commit
钩子来重新索引......
但是,如果after_commit
失败,则事务将回滚,并且我要保存的Account(ActiveRecord::Base)
将被删除。
我想使用sidekiq,perform_async
来调用after_commit
挂钩,但不知道我该怎么做。
有什么建议吗?
答案 0 :(得分: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.包含ActiveRecord :: Base中的Reindex模块
2.set:auto_index =&gt;假
3.allall