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

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を学べる良書おすすめ

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

Ruby

コメントする

メールアドレスが公開されることはありません。