Algolia搜索延迟作业ArgumentError:无法为非持久记录创建作业

时间:2016-04-22 14:06:40

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

我正在使用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_jobSQL (0.2ms) DELETE FROM "patient_profiles" WHERE "patient_profiles"."id" = $1 [["id", 1]]

我的问题是,如何让延迟工作与algolia很好地合作,以便在trigger_delayed_job之前调用DELETE?或者我在这里错过了其他什么?

我的rails版本是4.2.6

0 个答案:

没有答案