使用Rails 4和Devise实现Active Job

6

我正在尝试在Rails 4和Devise中设置Active Job。如果有任何教程,我会接受的(我的搜索没有找到)。

我知道有一个Devise Async gem,但它并不支持Active Job。 也就是说,我发现了这个gem,它正在开发中,但我遇到了一个uninitialized constant Devise :: Async :: Backend :: Base (NameError)错误。(可能是我实现时出了问题)。

欢迎任何建议,我希望不必创建新的控制器方法。

1个回答

13

您可以将以下代码包含在您想要的模型中(通常是 User):

def send_devise_notification(notification, *args)
  devise_mailer.send(notification, self, *args).deliver_later
end
你可以查看以下页面以获取更多细节:http://www.sitepoint.com/devise-authentication-in-depth/

1
这似乎是Devise的README中现在官方推荐的技术:https://github.com/plataformatec/devise#activejob-integration - stevo
1
嗯...我采用一半的方式。根据 https://github.com/plataformatec/devise/issues/3550#issuecomment-94248927(以及方法评论 https://github.com/plataformatec/devise/blob/2f0002a449a8b9616d51127dc6247bfd8414523d/lib/devise/models/authenticatable.rb#L123),如果您在用户创建时使用内置的devise通知,则可能比这更复杂。`deliver_later` 可能仅适用于先前保存的记录,而不是新记录。 - stevo
感谢你们积极参与。由于你们的答案比我最终选择的更好,所以我给了你们分数。 - AGirlThatCodes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接