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 |