validate :img_path_check?
」の部分で、img_path_check? というカスタムバリデーション(自分で作ったバリデーション)を実行しています。
validates
」でしたが、カスタムバリデーションの場合は「 validate
」になります。(sがない)if !img_path.file.extension.in?(%w[jpg jpeg gif png])
」の部分で、「アップロードされた画像の拡張子( . の後の部分)の名前が、[jpg jpeg gif png]に含まれていないか?」を判定しています。
img_path.file.extension.in?(%w[jpg jpeg gif png])
」だと、「含まれているか?」の判定ですが、最初に ! が付いているので、反対の意味になります。img_path.file.extension.in?(%w[jpg jpeg gif png])
」なので、「含まれていないか?」の判定になります。errors.add(:img_path, "アップロードできるファイルは (jpg, jpeg, gif, png)だけです")
」の部分で、エラーメッセージを追加しています。
また、「 errors.add 」
が実行されると、登録処理も失敗になりますので、これで「画像の種類のバリデーション」はOKです。ファイル形式 | 特徴 | 圧縮方式 | 色深度 | 透明度サポート | メタデータ |
---|---|---|---|---|---|
JPEG(JPG) | 高圧縮率で写真向け | 非可逆圧縮 | 24ビット | なし | あり |
PNG | 透明度を含む高品質 | 非可逆圧縮 | 8, 24, 32ビット | あり | あり |
GIF | アニメーション対応 | 可逆圧縮 | 8ビット | あり | なし |
BMP | 非圧縮の高品質 | 非圧縮 | 1, 4, 8, 24ビット | あり | あり |
TIFF | 高品質で多様なデータ | 可逆圧縮、非可逆圧縮 | 1, 8, 16, 24, 32ビット | あり | あり |
WEBP | 高圧縮率で高品質 | 非可逆圧縮、可逆圧縮 | 24ビット | あり | あり |
非可逆とは、元に戻せないこと、
可逆とは、元に戻せることです。
色深度とは「どれくらいの色の種類が使えるか?」です
数字が大きいほど、多くの色が使えます。
透明度とは「画像の背景部分を透明に出来るか?」です。
透明度に対応していない場合は、白色になります。
メタデータとは「ファイルの作成日」や「GPS情報」のようなデータです。
呼び方 | サイズ | 省略文字 |
バイト(byte) | 8bit | B |
キロバイト(kilobyte) | 1000B | KB |
メガバイト(megabyte) | 1000KB | MB |
ギガバイト(gigabyte) | 1000MB | GB |
テラバイト(terabyte) | 1000GB | TB |
ペタバイト(petabyte) | 1000TB | PB |
※30年以上前の古いパソコンや、特殊なコンピュータでは【8bit = 1B】ではないですが、現在はほぼ存在しないので、気にする必要はありません。
呼び方 | サイズ | 省略文字 |
バイト | 8bit | B |
キビバイト | 1024B | KiB |
メビバイト | 1024KiB | MiB |
ギビバイト | 1024MiB | GiB |
テビバイト | 1024GiB | TiB |
ペビバイト | 1024TiB | PiB |