0

我正在尝试创建一个 rake 任务来向某些用户发送电子邮件(用于 cron 作业)。

在应用程序中,所有功能都可以正常工作,但在 rake 任务中,我无法将 view_context 发送到 Prawn 对象以呈现 PDF。我在 Prawn 中使用 view_context 来获取用户名和助手类。

遵循代码:

耙任务:

task :view_missing_emails => :environment do
  User.all.each do |user| 
    LetterMailer.attached_pdf(user.email, view_context).deliver
end

信函代码:

class LetterMailer < ActionMailer::Base
  default from: "test@example.com"

  def attached_pdf(email, view)
    @email = email
    @view = view
    attachments["Letter.pdf"] = LetterPdf.new(@email, @view).render
  end
end

字母PDF代码:

class LetterPdf < Prawn::Document
  def initialize(email, view)
    @email = email
    @view = view

    if @view.current_user.user_permission.admin?
      text "You are an admin"
    else
      text "You are NOT an admin"
    end

    text "Your email is: #{@email}"
  end

(current_user 是一个设计方法)

正如我所说,在网页上运行应用程序,一切正常。但在 Rake 任务中,我收到以下错误:

rake aborted!
undefined local variable or method `view_context' for main:Object

关于如何将 view_context 传递给 Rake 任务的任何想法,或者,如果有另一种更智能的方式来呈现 PDF,使用视图和控制器辅助方法,而无需发送 view_context?

谢谢!

4

0 回答 0