我正在考虑使用gem google maps for rails,但无法看到如何在创建新记录后使用delayed_job来获取线索。
在使用delayed_job
之前,有没有人遇到过这个gem希望有人可以提供建议。
答案 0 :(得分:3)
好吧,我不确定你对延迟工作有多了解,所以我会从那里开始。
延迟工作可以利用任何响应'#perform'的课程,所以你需要的第一件事是获取坐标并将它们存储在模型中的类。
class GoogleMapsCoordinateService
def perform(record)
coords = Gmaps4rails.geocode(record.address) #This is the method that will actually return a hash of coordinates for each match it finds.
record.update_attributes(:lattitude => coords[0][:lat], :longitude => coords[0][:lng])
end
end
然后你只需要在模型中的after_create钩子中将该作业排入队列
class INSERTYOURMODELNAMEHERE < ActiveRecord::Base
after_create :get_coordinates
def get_coordinates
Delayed::Job.enqueue GoogleMapsCoordinateService.new(self)
end
end
这样,在创建每条记录之后,您将排队抓取背景中的坐标,同时保持响应时间快速。