0
我一直在想,在初始化程序中获取记录很常见?导轨;在初始化程序中获取记录
这里这是服务对象获取记录和生成的PDF收据文件的示例。
输入是发票uuid
,并获取相关记录,如卡明细,initialier内发票项目。
class Pdf::GenerateReceipt
include Service
attr_reader :invoice, :items, :card_detail
def initialize(invoice_uuid)
@invoice ||= find_invoice!(invoice_uuid) # caching
@items = invoice.invoice_items
@card_detail = card_detail
end
.....
def call
return ReceiptGenerator.new(
id: invoice.uuid, # required
outline: outline, # required
line_items: line_items, # required
customer_info: customer_info
)
rescue => e
false, e
end
.....
def card_detail
card_metadata = Account.find(user_detail[:id]).credit_cards.primary.last
card_detail = {}
card_detail[:number] = card_metadata.blurred_number
card_detail[:brand] = card_metadata.brand
card_detail
end
end
Pdf::GenerateReceipt.('28ed7bb1-4a3f-4180-89a3-51cb3e621491') # => then generate pdf
问题是如果记录未找到,则会生成错误。 我可以在初始化程序内拯救,但是这似乎并不常见。
我该如何以更多的红宝石方式解决这个问题?
谢谢!我同意,我已经有这本书,但还没有读过那么多。我想出了为什么我这样做,因为我异步生成并发送收据,所以也许信用卡在排队后立即改变,这可能是一个问题。 – Tosh