注文/請求書を保存できるアプリがあります。顧客の請求書を複製できる簡単な機能を構築しています。私は Order.rb モデルにこのメソッドを書きました。
請求書を取得し、関連付けられた項目を複製し、新しい OrderID をそれらに追加します...そして関連付けられた画像についても同じことを行います。
def self.duplicate_it(invoice)
new_invoice = invoice.dup
new_invoice.save
invoice.lineitems.each do |l|
new_lineitem = l.dup
new_lineitem.order_id = new_invoice.id
new_lineitem.save
end
invoice.images.each do |i|
new_image = i.dup
new_image.order_id = new_invoice.id
new_image.save
end
return new_invoice
end
.dup
残念ながら、私は S3 にイメージを保存しているため、この関連する有効期限がすべてあるため、イメージだけを保存することはできません。image_url を使用して画像を再生成する方法はありますか?
これを実行すると発生するエラーは以下のとおりです。これは、関連するすべての画像情報が正しく複製されているわけではないことを示しています。
Showing /Users/bruceackerman/Dropbox/printavo/app/views/orders/_image-display.erb where line #3 raised:
undefined method `content_type' for nil:NilClass
Extracted source (around line #3):
1: <% @order.images.each do |image| %>
2: <% if image.image && image.image.file %>
3: <% if image.image.file.content_type == "application/pdf" %>
4: <%= link_to image_tag("/images/app/pdf.jpg",
5: :class => 'invoice-image'),
6: image.image_url,