はじめに
記念すべき初投稿!
enumを使えるようになりたい初学者の振り返りメモです
enumとは
- enumは「enumeration:列挙」の略
- 名前を整数の定数に割り当てるのに使われるデータ型
- そう、「整数の定数に割り当てる」データ型なのです(ここが抜けていてとんでもない目にあいました)
手順
- Gem記述
- 日本語化
- ビューで呼び出す
実装
①今回はGemを使用
Gemfile
gem "enum_help"
bundle installを忘れずに
②モデルにenumを定義
student.rb
enum gender: { female: 0, male: 1 }
今回はStudentモデルのgenderカラムに定義
0→female、1→maleとします
③日本語化
まず、国際化(i18n)という仕組みを使用可能に
config/application.rb
config.i18n.default_locale = :ja
続いて、「config/locales」直下にファイルを作成
日本語の指定を記述
ja.yml
ja: #日本語の設定
enums: #enumの設定
student: #モデル名(Studentモデルに対して)
gender: #カラム名(genderカラムに対して)
female: "女性"
male: "男性"
階層構造を意識します
「female→女性、male→男性」として日本語の指定完了
④ビューファイルで呼び出す
投稿フォームを作成
new.html.erb
#...略
<div>
<%= f.label :gender, '女性' %>
<%= f.radio_button :gender, Student.genders.key(0) %>
<%= f.label :gender, '男性' %>
<%= f.radio_button :gender, Student.genders.key(1) %>
</div>
#...略
投稿後の一覧
index.html.erb
#...略
<%= student.gender_i18n %>
#...略
「カラム名_i18n」で日本語でその人の性別が表示されました
失敗談
今回、何度やっても日本語にならず苦戦
その理由は・・・
migrateファイル
#...略
t.string :gender
#...略
データ型が文字列になっているというオチでした
ロールバックして、integerに書き換えました
migrateファイル
#...略
t.integer :gender
#...略
記録に残し、記憶に残す!
まとめ
- enumは整数の定数に割り当てるデータ型
- gemで簡単に使用可能
- 国際化(i18n)によって、日本語化も可能
- 呼び出すときは、「カラム名_i18n」
初投稿で拙い部分もあるかと存じます
ご指導、ご指南いただけると幸いです!!