我正在使用algoliasearch-rails gem并尝试将回调设置为异步。我正在使用延迟工作(gem 'delayed_job_active_record'
)。
配置/ application.rb中
config.active_job.queue_adapter = :delayed_job
patient_profile.rb
algoliasearch :per_environment => true, id: :uuid, enqueue: :trigger_delayed_job do
attribute :first_name, :last_name, :name, :photo_url
geoloc :latitude, :longitude
attributesToIndex ['first_name', 'last_name', 'name']
end
def self.trigger_delayed_job(record, remove)
if remove
record.delay.remove_from_index!
else
record.delay.index!
end
end
但是,删除作业时,由于以下错误,我无法将作业放入队列:ArgumentError: job cannot be created for non-persisted record
。在触发回调之前,记录已从表中删除。如果我投入调试器并查看日志,您可以看到在调用DELETE
之前调用了trigger_delayed_job
。
SQL (0.2ms) DELETE FROM "patient_profiles" WHERE "patient_profiles"."id" = $1 [["id", 1]]
我的问题是,如何让延迟工作与algolia很好地合作,以便在trigger_delayed_job
之前调用DELETE
?或者我在这里错过了其他什么?
我的rails版本是4.2.6