🦁
【RubyonRails】CarrierWaveを使って画像をDB登録する方法
はじめに
RubyonRailsでCarrierWaveを使って画像をDB登録するまでのチュートリアルを共有します。
具体的には、以下のような内容で進めます。
- CarrierWaveのインストール
- アップローダーの生成
- Modelの設定
- マイグレーションの作成
- Seedファイルの設定
- Viewの設定
0. 前提条件
今回は既にに作成済みのFoodモデルに画像登録用のfood_imageカラムを作成します。
1. CarrierWaveのインストール
GemfileにCarrierWaveを追加します。
gem 'carrierwave', '~> 3.0'
bundle installでインストールを実行します。
docker-compose exec web bundle install
2. アップローダーの作成
アップローダーを生成します。
docker-compose exec web bin/rails g uploader FoodImage
3. Modelの設定
FoodモデルにCarrierWaveを設定します。
class Food < ApplicationRecord
mount_uploader :food_image, FoodImageUploader
end
4. マイグレーションの作成
food_imageカラムを追加するマイグレーションを作成します。
docker-compose exec web bin/rails g migration AddFoodImageToFoods food_image:string
マイグレーションを実行します。
docker-compose exec web bin/rails db:migrate
5. Seedファイルの設定
db/seeds.rbで画像を含むデータを登録します。
Food.create(
food_name: "サンプルフード",
foodcategory_id: 1,
country: "日本",
spice_level: 3,
price: 500,
food_image: File.open(Rails.root.join('db/seeds/sample_image.jpg')),
title: "おいしいフード",
body: "これはサンプルの説明です。"
)
6. Viewの設定
Viewで画像を表示します。
<% if @food.food_image? %>
<%= image_tag @food.food_image.url %>
<% end %>
最後に
以上が、RubyonRailsでCarrierWaveを使って画像をDB登録するまでのチュートリアルです。
Discussion