Active Storageを使って画像をアップロード

ローカル環境でActive Storageを使用して画像をアップロードする機能を実装した時のメモ。

事前準備

imagemagickが入っていなかったのでインストール

$ brew install imagemagick

Active Storageの環境構築

$ bin/rails active_storage:install
$ bin/rails db:migrate RAILS_ENV=development

画像をアップロード

class User < ApplicationRecord
  has_one_attached :avatar
end
class UsersController < ApplicationController
  def update
    @user.update(user_params)
  end
  
  private
    def user_params
      params.fetch(:user, {}).permit(:name, :avatar)
    end
end
= form_for @user do |f|
  = f.label :avatar
  = f.file_field :avatar
  = f.submit

画像を表示

gem 'mini_magick'
<%= image_tag user.avatar.variant(resize: "100x100") %>

参考