クリップは、添付ファイルを保存しました
-
20-09-2019 - |
質問
、tmpファイルを作り、その中に文字列を入れて、それを再度開き、添付ファイルとして保存するなどPaperlip経由で添付ファイルとして、いくつかの文字列を保存するためのより良い方法はありますか?
このよう
def save_string data
tmp_file = "/some/path"
File.open(tmp_file,'w') do |f|
f.write(data)
end
File.open(tmp_file,'r') do |f|
ceneo_xml = f
save!
end
end
解決
ペーパークリップストアはをファイルのあなたのモデルと一緒に - 。これは、何を書かれているものであるので、私は短い答えは「ノー」だと思います。
あなたはペーパークリップのソースでattachment.rb
を見るとあなたはdef assign uploaded_file
と呼ばれる方法が表示されます。あなたはこのメソッドの実装を見れば、あなたはそれの上に定義された特定のメソッドを持つようにアップロードされたファイルオブジェクトを期待していることがわかります。
あなたはペーパークリップが期待するのと同じインタフェースを踏襲し、独自のクラスを作成することができますが、ファイルを保存し、ペーパークリップにおそらく最も簡単な方法であることを割り当てるのソリューション正直に言うと。
他のヒント
より良い方法は実際にあります - あなたはペーパークリップが強化され、あなたが時間がないの擬似アップロードされたファイルを取得しますこれはStringIOにそれをラップすることができます。あなたは、インスタンスメソッドを定義することによって、それをカスタマイズしたり、直接
このようにStringIOのサブクラスを作成することができますclass InvoiceAttachment < StringIO
def initialize(invoice, content)
@invoice = invoice
super(content)
end
def original_filename
from = @invoice.from
to = @invoice.to
date = @invoice.created_at.strftime('%B-%Y').downcase
"invoice_#{date}_from_#{from}_to_#{to}.pdf"
end
def content_type
'application/pdf'
end
end
お楽しみください!
所属していません StackOverflow