1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】ActiveStorage Validator

Posted at

はじめに

ActiveStorageを利用したファイルアップロード時に特定のファイル形式のみ許可するため、バリデーション設定が必要になりました。
調べたところactivestorage-validatorというGemがありました。簡単にですが、利用した内容について纏めます。

実行環境

  • rails 6.0.0
  • ruby 2.5.6

実施内容

Gemをインストール

gem 'activestorage-validator'

モデルへバリデーション記述

class User < ApplicationRecord
  has_one_attached :video

  with_options presence: true do
    validates :name
    validates :video, blob: { content_type: ['audio/mpeg', 'audio/x-wav', 'audio/flac', 'audio/ogg', 'video/mp4', 'video/webm'] }
  end
end

has_one_attachedでファイルとレコードの間に1対1のマッピングを設定、
content_typeで許可するファイル形式を指定します。
※今回はmp3,wav,flac,ogg,mp4,webm形式のファイルを許可

バリデーション確認

上記形式以外のファイルをアップロードするとバリデーションがかかり以下の通り、エラー出力されました。

Video is not a valid file format

まとめ

activestorage-validatorを利用して簡単にバリデーションの設定をすることができました。今回はファイル形式のみ設定を行いましたが、ファイルサイズのバリデーションが設定できる様です。用途に応じて利用したいと思います。

参考

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?