環境
- Ruby3.1.2
- Rails6.1.7
問題
Railsでアプリ作成中にenumを使っていてmodelにenumの記述を加えて動作確認しようとしたらエラーが出た。解決策がわからず、検索しても記事が出てこなかった。
解決方法
解決方法①
- enum period: { 1限: 0, 2限: 1, 3限: 2, 4限: 3, 5限: 4, オンライン: 5 }
# 数字を半角から全角に変更
+ enum period: { 1限: 0, 2限: 1, 3限: 2, 4限: 3, 5限: 4, オンライン: 5 }
とすると
エラーは出たものの、先ほどのエラーは解消されていそう。
解決方法②
enum day_of_week: { 月曜日: 0, 火曜日: 1, 水曜日: 2, 木曜日: 3, 金曜日: 4, 土曜日: 5, オンライン: 6 }
- enum period: { 1限: 0, 2限: 1, 3限: 2, 4限: 3, 5限: 4, オンライン: 5 }
+ enum period: { 1限: 0, 2限: 1, 3限: 2, 4限: 3, 5限: 4, 指定なし: 5 }
エラー文からわかる通り、「オンライン」という文字が既に同モデルのenumで使われていることが原因。
重複を避けるようにして解決。
まとめ
- enumの記述の中で半角と全角が混在してはいけない
- 別のカラムでも同モデルであれば値が重複してはいけない
最後に
今回のエラーは自分が調べたときは同じ例がなかったため、初めて記事を書いてみました。
同じエラーではまった人のお役に立てたら幸いです!
※参考記事などはないので書いた内容が間違っている可能性もあるので鵜呑みはしないようお気を付けください。。。