Zenn
Closed3

railsのenum型で沼

にふうちにふうち

前提

modelで次のような記述をしている

models/task.rb
class Task < ApplicationRecord
  validates :task_name, presence: true, length: { maximum: 190 }
  validates :detail, length: { maximum: 190 }
  validates :priority, presence: true, numericality: { only_integer: true }
  validates :status, presence: true, numericality: { only_integer: true }
----
  enum priority: {
    '低': 0,
    '標準': 1,
    '高': 2
  }

  enum status: {
    '未着手': 0,
    '着手中': 1,
    '完了': 2
  }
schema.rb
  create_table "tasks", charset: "utf8mb4", force: :cascade do |t|
    t.string "task_name", null: false
    t.datetime "date_limit"
    t.integer "priority", default: 1
    t.integer "status", default: 0
--
  end

問題

  • Task.newしてみると
irb(main):001:0> Task.new
=> #<Task:0x0000ffffb5d596d8 id: nil, ...,
 priority: "標準", status: "未着手", ...>
にふうちにふうち
  • 同じことが#createから task.saveした場合でも発生し、値がkey名になり正しくsaveできない

一旦の対応

  • enum型を諦めた
  • →先輩から「enum型を使うのはよくあることだし、key名で保存されてしまうことを修正するべきでは?」という至極真っ当なことを言われてしまった……すいませんめんどくなって辞めちゃいました……

調査

このスクラップは2022/08/17にクローズされました
ログインするとコメントできます