枚举的默认值,如果它不存在

时间:2017-03-06 03:04:16

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

我在模型中有一个枚举。我想得到它的整数值,或者它没有设置我想得到一个值的整数值,我选择它作为默认值:

  enum my_enum: [:val1, :val2, :val3]

  def method1
    int_val = self.read_attribute(:my_enum)

    # what if my_enum hasn't been set?
    unless int_val
      int_val = ??? # how to get integer of :val2 ???
    end
  end

2 个答案:

答案 0 :(得分:0)

枚举的默认值是您在第0个索引处设置的值。 对于前者enum动物{Cat,Dog,Lion,Tiger}的默认值为'Cat',即动物(0)。

但是如果你将enum定义为枚举动物{Cat = 1,Dog = 2,Lion = 3,Tiger = 0}则默认为'Tiger'

考虑到您可以定义枚举以满足您的要求

答案 1 :(得分:0)

设置数据库中字段的默认值非常有用。尝试使用数据库迁移将默认值更改/添加到必填字段。示例代码:

class ChangeDefaultValueToModel < ActiveRecord::Migration
  def change
    change_column_default :model_name, :field_name,  default_value
  end
end

有关更多详细信息,请查看change_column_default

的Ruby on Rails API