在模型上添加枚举会在初始化不同的类对象时显示错误

时间:2017-11-16 09:14:39

标签: ruby-on-rails ruby activerecord ruby-on-rails-5 rails-activerecord

我在RvDate模型上添加了枚举:

class RvDate < ApplicationRecord
 enum status: { Available: 0, Not_Available: 1 }

 # Associations
 belongs_to :rv

 # Validations
 validates_presence_of :start_date
end

但是当我在rails控制台上运行Rv.create时,它会显示以下错误: Error shown on creating new Rv

我没有在Rv模型上使用枚举,我不需要。我在这里错过了什么吗?

Rv模型如下所示:

class Rv < ApplicationRecord
 has_many :rv_dates, dependent: :destroy
end

rv_dates的架构

create_table "rv_dates", force: :cascade do |t|
 t.integer  "rv_id"
 t.date     "start_date"
 t.date     "end_date"
 t.boolean  "availability"
 t.float    "price"
 t.text     "notes"
 t.datetime "created_at",   null: false
 t.datetime "updated_at",   null: false
 t.integer  "status"
 t.index ["rv_id"], name: "index_rv_dates_on_rv_id", using: :btree
end

3 个答案:

答案 0 :(得分:0)

Ruby没有内置的枚举类型

创建一个常量:

STATUSES = { available: 0, not_available: 1 }

访问:

RvDate::STATUSES[:available]

RvDate::STATUSES[:not_available]

答案 1 :(得分:0)

尝试使用数组而不是散列,枚举将自动分配值,并允许您使用辅助方法:

enum status: [
  :available,
  :not_available
]

这应该允许你使用如下的辅助方法:

RvDate.statuses => { available: 0, not_available: 1 }
some_rv = RvDate.new
some_rv.status = :available
some_rv.available? => true

答案 2 :(得分:0)

感谢大家的帮助。实际问题在于迁移文件。 Rvs 表格中有一个名为状态的字段,该字段设置为整数,而不是字符串。因此,这导致错误无法找到Rv类对象的状态。非常感谢大家的帮助。