ActiveJob ジョブ内から呼び出している通知サービスがあります (delayed_job バックエンドを使用)。各通知の対象はモデル インスタンスであり、いくつかの異なるクラスのいずれかになります。受信者の便宜のために、そのオブジェクトのビューへのリンクを含める必要があります。
url_for はジョブ コンテキストで使用できるメソッドではないため、これは機能しません。
class NotificationJob < ActiveJob::Base
def perform(object, message)
NotificationService.send(url_for(object), message)
end
end
このコードの以前のより限定的なバージョンでは、 を使用Rails.application.routes.url_helpers.model_name_url(object)
しましたが、これはモデル固有です。Rails.application.routes.url_for
モデルではなく、コントローラー/アクションの仕様が必要なようです。
メーラーでは使用できurl_for(object)
、モデル クラスに関係なく、正しいことを行います。では、ジョブ内のポリモーフィック URL ヘルパーにアクセスするにはどうすればよいでしょうか?