我有这个 API 可以保存视频、索引它们并更新它们。为了减少索引发生的时间,我决定添加一些验证以仅索引已更改或新的视频。之前是这样的:
class Video < ActiveRecord::Base
after_save :index_me
def index_me
Resque.enqueue(IndexVideo, self.id)
end
end
我所做的更改如下:
class Video < ActiveRecord::Base
before_save :check_new_record
after_save :index_me
def check_new_record
self.is_new = self.new_record?
end
def index_me
if self.changed? || self.is_new
Resque.enqueue(IndexVideo, self.id)
end
end
end
如果没有更改,一切都很好,除了每个视频都会被索引,即使没有任何更改。但是随着我的更改,当视频尝试保存到数据库时,它会回滚。有什么想法吗?