gpt4 book ai didi

ruby-on-rails - Rails 4.1:在 ActionMailer::Preview 中访问 c​​urrent_user

转载 作者:行者123 更新时间:2023-12-04 03:54:11 25 4
gpt4 key购买 nike

Rails 4.1 有一个很好的方式来 preview mailersActionMailer::Preview .我所有的邮寄者都接受 user参数,我想传入 current_user (来自设计)预览。

如果我尝试这个,它不起作用。

class SubscriptionsMailerPreview < ActionMailer::Preview
# Preview this email at http://localhost:3000/rails/mailers/subscriptions_mailer/new
def new
SubscriptionsMailer.new(current_user)
end
end

它返回 undefined local variable or method 'current_user' for #<SubscriptionsMailerPreview:0xa6d4ee4> .

我怀疑这是因为 current_user由 Devise 在 ApplicationController 中定义,根据文档, ActionMailer用途 AbstractController::Base .在这种情况下,将存储 current_user在类变量中是一个坏主意吗?

有谁知道我如何使用 current_user helper 在 ActionMailer::Preview ?

最佳答案

我会请你(和投票者)思考这个问题:如果你将你的邮件工作(任何生产应用程序应该)移到后台会发生什么?您将如何获得当前用户?

邮件程序和它的预览不知道是谁current_user是。邮件程序的工作是将邮件发送给它接收的用户。它的预览是为了直观地展示这种行为。

在您的邮件程序预览中创建一个新用户,并传递给邮件程序。

  def new
user = User.create! # etc...
SubscriptionsMailer.new(user)
end

用户是谁并不重要。重要的是它是一个具有邮件程序所期望的行为的用户对象。

如果要测试应用程序是否会向 current_user 发送邮件,为此编写一个功能测试。邮件预览不应该关心。

关于ruby-on-rails - Rails 4.1:在 ActionMailer::Preview 中访问 c​​urrent_user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25291320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com