0

我正在尝试在使用蜻蜓 gem 下载文件时提供带有用户电子邮件地址和时间戳水印的 PDF 文件,并且在使用 before_serve 块时遇到了一些麻烦。我无法解决的是如何使用蜻蜓传递给块的作业对象以及如何应用自定义处理器。直接在作业对象上调用进程似乎不会运行处理器

app.configure do |config|
  config.server.before_serve do |job, env|
    user = # user record grabbed from database
    job.process(:watermark, user: user)
  end
end

但是,如果我在 rails 模型返回的蜻蜓对象上调用进程,则 pdf 会正确处理,但我不确定如何实际指示蜻蜓发送到浏览器的内容

app.configure do |config|
  config.server.before_serve do |job, env|
    user = # user record grabbed from database
    report = # report grabbed from database
    report.pdf.process(:watermark, user: user)
  end
end

因此,在这两种情况下,相同的文件都会返回给浏览器,即原始的无水印版本。也许我想让蜻蜓做一些它在 before_serve 块中不应该做的事情?我的替代实现是阻止对直接文件下载的访问,并在 Rails 控制器中执行所有这些操作。如果可能,我想使用蜻蜓的 before_serve 块,因为我已经在块中添加了所有身份验证,以确保允许用户下载文件。

谢谢

4

1 回答 1

0

经过进一步调查,最好的解决方案似乎是阻止 before_serve 块中的所有直接文件访问,并使用标准的 rails 控制器为文件添加水印并将其呈现以供下载。

于 2013-04-02T16:37:01.003 回答