【发布时间】:2015-09-08 01:13:24
【问题描述】:
我有一个从 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 助手呢?
【问题讨论】:
标签: ruby-on-rails rails-activejob