環境
・Ubunts 14.04
・Rails 5.1.5
・Ruby 2.4.0
・PostgreSQL 9.3.18
使用するgem
・carrierwave
実装手順
gemをインストール
Gemfileに以下の内容を書いて、bundle install
を実行
Gemfile
gem 'carrierwave', '~> 1.0'
Uploaderを作成する
carrierwaveのインストールが完了したらuploaderクラスを生成できるので、以下のコマンドでuploaderを作成する
rails g uploader <アップローダー名>
Uploaderでアップロードした画像を保存する場所を指定する
app/uploaders/image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
storage :file
# 画像を保存する場所を指定
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
Uploaderをモデルのカラムに紐付ける
アップロードした画像をどのテーブルのカラムに保存するかを定義する
mount_uploader
メソッドを使ってカラムとUploaderを紐付ける
例:Sampleモデルのimageカラムに作成したUploaderを紐付け
sample.rb
class Sample < ApplicationRecord
mount_uploader :image, ImageUploader
end