Rails太阳黑子:关联模型的重新索引不会作为延迟作业运行

时间:2012-08-10 15:31:12

标签: ruby-on-rails delayed-job sunspot-rails

我正在使用太阳黑子与延迟作业一起执行我的模型的重新索引作为异步后台进程。对于模型更新,这可以正常工作,因为:handle_asynchronously :solr_index, :queue => 'solr_index'

然而,模型中的可搜索块(我们称之为模型A)也引用了相关模型(B)的属性,其中B有许多As。当用户更新关联的模型时,我会在B中的after_save回调中触发重新索引,如下所示:Sunspot.index(self.my_many_As)。虽然重新索引成功,但它不会作为延迟作业运行。我怎么能做到这一点?

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

如何安排在更新文档上调用索引的作业?您可以记录特定模型的最新时间索引已更新,并调用Sunspot.index(ModelB.updated_after(last_update_time))

答案 1 :(得分:0)

不是调用Sunspot.index(self.my_many_As)而是直接在B的after_save回调self.my_many_As.each(&:solr_index)内为每个A调用solr_index。适合我。