目次

  1. Active Storageとは
    1. Rails標準のファイルアップロード機能
    2. 他の選択肢
  2. 基本的な実装の仕方
    1. ステップ1: データベースにテーブルを作成
    2. ステップ2: モデルとの関連付け
    3. ステップ3: フォームの作成
    4. ステップ4: コントローラー の修正
    5. ステップ5: ビューで表示
  3. Active Storageの仕組み
    1. 全体像: データベースとストレージの役割分担
    2. active_storage_blobs テーブルの役割
    3. active_storage_attachments テーブルの役割
    4. ストレージとの接続設定
  4. 応用的な使い方
    1. 1つのモデルで複数の種類のファイルを扱う
    2. 1つの投稿に複数枚の画像を添付する (has_many_attached)
    3. 複数モデルの添付ファイルを一元管理する仕組み
  5. コラム:なぜURLに id ではなく key を使うのか

1. Active Storageとは

1-1. Rails標準のファイル管理機能

Active Storageとは、一言でいえば 「Active Record のストレージ版」 のような機能です。

データベースのレコードをRubyオブジェクトとして扱えるようにするのがActive Recordなら、Active Storageは ストレージに保存したファイルを、モデルに簡単に関連付け、Rubyオブジェクトのように扱えるようにする ためのフレームワークです。

これを使うことで、ファイルの保存先(Amazon S3やローカルディスクなど)がどこであってもコード上では同じように操作でき、ユーザーのプロフィール画像や投稿の添付ファイルなどを統一的に管理できます。

主な特徴

1-2. 他の選択肢

以前は CarrierWaveShrine といったGemが広く使われていました。これらはActive Storageよりも詳細なカスタマイズが可能ですが、現在では特別な理由がない限り、まずは標準機能であるActive Storageの利用を検討するのが一般的です。


2. 基本的な実装の仕方

ここでは、User モデルにプロフィール画像(avatar)を追加するケースを例に、実装の大きな流れを4ステップで解説します。