我有一个从 ActiveJob 作业内部调用的通知服务(使用延迟作业后端)。每个通知的主题是一个模型实例,可以是几个不同类中的任何一个。为了方便收件人,我需要包含指向该对象视图的链接。
这不起作用,因为 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 助手呢?