LoginSignup
0
0

初学者メモ enumとは

Posted at

はじめに

記念すべき初投稿!
enumを使えるようになりたい初学者の振り返りメモです

enumとは

  • enumは「enumeration:列挙」の略
  • 名前を整数の定数に割り当てるのに使われるデータ型
  • そう、「整数の定数に割り当てる」データ型なのです(ここが抜けていてとんでもない目にあいました)

手順

  1. Gem記述
  2. 日本語化
  3. ビューで呼び出す

実装

①今回は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」

初投稿で拙い部分もあるかと存じます
ご指導、ご指南いただけると幸いです!!

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