LoginSignup
0
0

Railsを使ったファイルアップロード処理方法

Posted at

Rails Active Storageの使い方ガイド

Ruby on Railsには、ファイルアップロードを簡単に扱うためのモジュールとしてActive Storageが提供されています。この記事では、Active Storageを使ってファイルアップロード機能をRailsアプリケーションに組み込む方法を解説します。

1. 必要なGemのインストール

まず、Gemfileactive_storageを追加します。Rails 5.2以降であれば、デフォルトでactive_storageはGemfileに含まれていますが、それ以前のバージョンや特定の理由で含まれていない場合は以下のように追加します。

gem 'activestorage', '~> 5.2'

追加したら、以下のコマンドを実行してgemをインストールします。

bundle install

2. Active Storageのインストール

次に、以下のコマンドを実行してActive Storageの必要なファイルやマイグレーションを生成します。

rails active_storage:install

このコマンドにより、Active Storageのためのマイグレーションファイルが生成されます。

3. マイグレーションの実行

マイグレーションファイルが生成されたら、以下のコマンドでデータベースに必要なテーブルを作成します。

rails db:migrate

以上の手順により、既存のRailsプロジェクトにActive Storageを新たに導入することができます。次にモデルの設定やストレージの設定など、Active Storageの利用に必要な設定を進めてください。

4. ストレージの設定

Active Storageはローカルストレージやクラウドストレージサービス(Amazon S3、Google Cloud Storage、Microsoft Azure Storageなど)をサポートしています。この設定はconfig/storage.ymlで行います。

例えば、開発環境でローカルストレージを使用し、本番環境でAmazon S3を使用する場合、以下のように設定します。

# config/storage.yml

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

amazon:
  service: S3
  access_key_id: your_access_key_id
  secret_access_key: your_secret_access_key
  region: your_region
  bucket: your_bucket_name

config/environments/development.rb:

config.active_storage.service = :local

config/environments/production.rb:

config.active_storage.service = :amazon

5. モデルに添付ファイルを追加

例として、ユーザーのプロフィール画像をアップロードする機能を考えます。Userモデルに以下のように追記します。

class User < ApplicationRecord
  has_one_attached :profile_image
end

has_one_attachedメソッドを使って、Userモデルにprofile_imageという名前のファイルを添付します。

5. フォームでファイルアップロードフィールドを使用する

ユーザーのプロフィール画像をアップロードするためのフォームを作成します。

<%= form_with(model: @user) do |form| %>
  <div class="field">
    <%= form.label :profile_image %>
    <%= form.file_field :profile_image %>
  </div>

  <%= form.submit %>
<% end %>

6. 画像の表示

画像を表示する場合は以下のようにrails_blob_pathrails_representation_pathヘルパーを使用します。

<%= image_tag @user.profile_image if @user.profile_image.attached? %>

以上の手順に従うことで、Active Storageを使ってRailsアプリケーションにファイルアップロード機能を追加することができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0