DelayedJob を使用してジオコード API 呼び出しのフローを制限できるように、Rails アプリでジオコーディングを処理しようとしています。
私の意図は、ユーザーにとって時間に敏感ではないため、ジオコーディング リクエストをキューに入れることだけです。また、1 秒あたり 1 回のリクエストしか必要としない無料のジオコーディング API (Nomintim) を使用しています。
ジオコーダーの宝石をセットアップしました。ユーザー モデルでは、ユーザー アカウントのセットアップから郵便番号を取得します (空白にすることはできず、既に検証中です)。
私の考えは、run_at を使用して呼び出しのスロットリングを開始することでしたが、run_at の最初のテストでは、ジョブがキューに入れられていることが示されましたが、ジオコードは完了時に値を保存していませんでした。
after_validation :run_geocode, :if => :postcode_changed?
def run_geocode
self.delay(:run_at => 30.seconds.from_now).geocode
end
ここでかなり明白なことを見逃しましたか?ドキュメントで使用するように言われている :geocode メソッドが何をするかを理解することはできません。