レビューサイト作成にあたり画像の複数投稿を実装したので
carrierwaveの使い方を買いておこうと思います。
①gemをインストール
$ bundle install
今回はmini_magickを使って画像の加工(リサイズなど)も実現したいので
併せてインストールしておく。
②モデルの生成
$ bundle exec rails g model image
レビューサイトなので別でreviewsモデルがすでにありますが、
今回は画像を複数投稿できるようにしたく、
reviewsモデルにimage1,image2...とカラムが増えていくのは非効率なので
別途画像のみのモデルを作成します。
db/migrate/一番下のファイル
モデルを作成すると新しいマイグレーションファイルが出来上がるので、上のように編集
マイグレーションファイルが編集できたら、$bundle exec rake db:migrate
このようなテーブルが出来上がる
(created_atとupdated_atはデフォルトで記述されているt.timestampsによって生成されたもの)
③アップローダーの作成
$ bundle exec rails g uploader image
※imageはアップローダーのファイル名にあたるものなので任意。
モデルやカラムと紐づけておくと分かりやすい
この「アップローダー」が何なのか理解できず色々調べたものの、
分かりやすく詳しく解説してある記事がなかなか見つけられず。
とりあえず、画像をアップロードするために必要なファイルなんだな、ということだけは理解。
このコマンドによりapp/uploadersディレクトリ、およびその配下にimage_uploader.rbが生成されます。
④image_uploader.rbの編集
生成されたimage_uploader.rbを見ると、すでに色々記述してある。
mini-magickを併用する場合は上から4行目あたりにある
この部分のコメントアウトを外しておく。
画像をリサイズさせたい場合はこちらも記述。
⑤モデルにマウントする
imageモデルをこのように編集。
これによりモデルとアップローダーを繋げることができる
※既にあるモデルにimageカラムを追加した場合は、そのモデル に追記
とりあえず今日はここまで。
明日以降また実装を続けるので、さらに理解が深まったらまた更新します。