Ruby

CarrierWaveで複数の画像を保存する方法 - Rails

2018年11月23日

0
0

CarrierWaveで複数の画像を保存する方法 - Rails

こういうフォームがあって

<%= form_for(@user, html: { multipart: true } ) do |f| %>

<%= f.label :top_image %>

<%= f.file_field :image %>

<%= f.label :cover_image %>

<%= f.file_field :cover_image %>

fileの二つを保存したい

mount_uploader :image, ImageUploader
mount_uploader :cover_image, BackgroundImageUploader
 

これでできる。/app/uploaders/image_uploader.rb

class ImageUploader < CarrierWave::Uploader::Base

# ストレージにS3を指定
storage :fog

# 画像ごとに保存するディレクトリを変えたいのでオーバーライド
def store_dir
# 例えばidごとにディレクトリを分けてみる
"#{model.id}"
end

# ファイル名を書き換える
def filename
# 例えば avater_1.jpg みたいなファイル名にしてみる
"Profile_#{model.id}.#{file.extension}" if original_filename
end

# キャッシュ先のディレクトリを指定
def cache_dir
"cache"
end

end

class BackgroundImageUploader < CarrierWave::Uploader::Base

# ストレージにS3を指定
storage :fog

# 画像ごとに保存するディレクトリを変えたいのでオーバーライド
def store_dir
# 例えばidごとにディレクトリを分けてみる
"#{model.id}"
end

# ファイル名を書き換える
def filename
# 例えば avater_1.jpg みたいなファイル名にしてみる
"Background_#{model.id}.#{file.extension}" if original_filename
end

# キャッシュ先のディレクトリを指定
def cache_dir
"cache"
end

end
 
** Rubyを学べる良書おすすめ

Pocket
LinkedIn にシェア

りょすけ
毎月3万人以上のプログラマーが訪れるoff.tokyoで、プログラマーさん向けのアンケートを実施しています、アンケートに無料回答すると、他の人の投票も見ることが出来ます!

学びたいプログラミング言語は何ですか?

 vaaaval@gmail.com



  • この記事を書いた人
  • 最新記事

藤沢瞭介(Ryosuke Hujisawa)

りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

-Ruby

Copyright© off.tokyo , 2021 All Rights Reserved Powered by AFFINGER5.