RailsのActive Storage導入を完全解説!初心者でもできるファイルアップロード設定手順
生徒
「Railsで画像をアップロードしたいんですが、どうやって始めればいいんですか?」
先生
「RailsではActive Storageという仕組みを使うと、画像やファイルを簡単に扱えます。」
生徒
「Active Storageって、特別な設定が必要なんですか?」
先生
「最初にインストールやデータベースの準備が必要です。順番に見ていきましょう。」
1. Active Storageとは?Railsでファイルアップロードを扱う仕組み
Active Storageは、Railsに標準で用意されているファイルアップロード機能です。画像やPDFなどのファイルを、データベースと連携して安全に保存できます。倉庫(保存先)と管理台帳(データベース)をセットで用意してくれる仕組みだと考えると分かりやすいです。
Rails Active Storageを使うことで、ローカル環境だけでなく、Amazon S3などのクラウドストレージにも同じ書き方で保存できます。
2. Active Storageを使う前の準備と環境確認
Active StorageはRails標準機能なので、追加のgemは基本的に不要です。ただし、Railsアプリが正しく作成されていることが前提になります。Railsは「決まりごとを守る」ことで、少ない設定で動くフレームワークです。
まず、Railsアプリのディレクトリに移動していることを確認します。
cd myapp
この状態でRailsのコマンドが使えることが重要です。
3. Active Storageのインストール手順
Active Storageを使うには、専用のテーブルを作成する必要があります。これは「どのファイルが、どのデータに紐づいているか」を管理するためです。
rails active_storage:install
このコマンドを実行すると、マイグレーションファイルが自動で作成されます。マイグレーションとは、データベースの設計図のようなものです。
4. マイグレーションを実行してデータベースを準備する
次に、作成された設計図をもとに、実際のデータベースを作成します。これをマイグレーションの実行と呼びます。
rails db:migrate
これでActive Storage用のテーブルがデータベースに作られました。ファイルそのものは保存先に、情報だけがデータベースに入ります。
5. storage.ymlで保存先を設定する
ファイルをどこに保存するかは、config/storage.ymlで設定します。開発環境では、パソコンの中に保存する設定が最初から用意されています。
local:
service: Disk
root: <%= Rails.root.join("storage") %>
この設定は「Railsアプリのstorageフォルダにファイルを置く」という意味です。箱の場所を指定しているイメージです。
6. Active Storageをモデルに紐づける基本設定
次に、どのデータにファイルを持たせるかを決めます。例えばUserモデルに画像を持たせたい場合、次のように書きます。
class User < ApplicationRecord
has_one_attached :avatar
end
has_one_attachedは「1つのファイルを持つ」という意味です。名前(avatar)は自由に決められます。
7. コントローラでファイルを受け取る準備
フォームから送られてきたファイルを受け取るためには、Strong Parametersに項目を追加します。Strong Parametersは、受け取って良い情報を明示する仕組みです。
def user_params
params.require(:user).permit(:name, :avatar)
end
これで、画像ファイルも一緒に保存できるようになります。
8. ビューでファイルアップロードフォームを作る
最後に、実際にファイルを選択する画面を作ります。Railsのフォームヘルパーを使うと簡単です。
<%= form_with model: @user do |f| %>
<%= f.text_field :name %>
<%= f.file_field :avatar %>
<%= f.submit "保存" %>
<% end %>
これでActive Storageの基本的な導入と初期設定は完了です。画像アップロードの土台ができました。