CarrierWaveの使用例として、inputファイルをアップロードしてModelとリンクさせるというケースが多いかと思います。
本記事では、inputファイルではなくRailsアプリケーションで作成したファイルをModelとリンクさせる方法を紹介します。
実装例
「Reportモデルのoutput_fileという項目にCarrierWaveをマウントしている」という体での実装イメージです。
# reportオブジェクトを取得します report = Report.find(params[:id) # tmp/hello.txtにファイルを作成します file_path = 'tmp/hello.txt' File.open(file_path, 'wb') do |file| file.puts('hello wolrd!') end # reportオブジェクトのoutput_fileにファイルをリンクさせます File.open(file_path) do |file| report.output_file = file end # ファイルを削除します FileUtils.rm_rf file_path
CarrierWaveを使用することで、Modelとファイルのライフサイクルを一体化することが出来ますので、とても保守が楽になります。
使用できる箇所では積極的に使用していくと良いでしょう。
参考
https://github.com/carrierwaveuploader/carrierwave#activerecord