3
我有一个multitenant Rails应用程序,在许多型号上都有一个tenant_id
列。为DelayedJob设置租户范围
属于一个特定的租户每个模型都有基于租户类的类变量默认范围:
default_scope { where(tenant_id: Tenant.current_id) }
Tenant.current_id
被设置在应用控制器。
的问题是,当我关于承租人范围的对象(即UserMailer.delay.contact_user(@some_user_in_a_specific_tenant)
)发送邮件(通过延迟工作),我得到NoMethodError
S代表nilClass
每当我打电话梅勒内的@some_user_in_a_specific_tenant
什么。大概是因为延迟作业过程没有设置Tenant.current_id
。
如何让DJ访问我传入的对象?
我明白了。我的延迟方法所有的邮件程序方法,这使得它更简单,但我会尝试一般方法。 – bevanb
是的,这是唯一合理的方法。 delayed_job进程只是另一个应用程序,拉取数据库记录和运行作业。除非您告诉它,否则无法知道您的主应用程序的状态。 – numbers1311407
看起来很有希望。我会尽力 :) – Dmitri