Rails 连接不再工作 - 以前工作过

问题描述 投票:0回答:1

情况

我有一个模型

invoice
,其属性
frozenn
可以在我的应用程序中处理
archiving
。在
archiving
上,应该生成并附加 PDF(我的应用程序中名为
out_invoice
[
invoice
的子模型])的出库发票,其中包含以下
callback

  def store_physical_copy_on_freeze!
    unless physical_copy.attached? # without attachment attach current pdf permanently
      pdf_str = Home::OutInvoicesController.render(
        template: "home/out_invoices/pdf",
        layout: 'pdf',
        assigns:  {
          out_invoice: self,
          bank_account: company.mean_of_payment_for_invoices
        }
      )
      pdf = WickedPdf.new.pdf_from_string(pdf_str)
      # attach the currently live generated out invoice forever
      physical_copy.attach(io: StringIO.new(pdf), filename: "#{pdf_name}.pdf")
    end
  end

问题:

方法调用完成后,附加的 PDF 不再附加(在控制台上检查,因为它没有出现在应该出现的前端中)。

我使用

byebug
进行调试,结果如下:在
.attach
调用之后,
physical_copy.attached?
true
,因此人们必须假设它有效,但事实并非如此。

这不是新代码,而是以前一直在工作的旧代码,据我所知,我没有更改相关配置。但这可能就是原因。

ruby-on-rails pdf model attachment wkhtmltopdf
1个回答
0
投票

一位朋友(Rails 专家)帮助我解决了这个问题。此方法调用是在

after_save
回调中触发的。模型的回调似乎再次重新触发了回调链或其他东西(老实说,没有完全理解这个问题)。他将回调从
after_save
更改为
before_save
解决了上述问题。我也不会通过查看旧代码来猜测,但解决方案的想法是正确的。看看历史的变迁。对@dbugger 的评论投了赞成票!

© www.soinside.com 2019 - 2024. All rights reserved.