Ruby on rails Rails5.0.2枚举处理无效值

Ruby on rails Rails5.0.2枚举处理无效值,ruby-on-rails,validation,activerecord,enums,rails-activerecord,Ruby On Rails,Validation,Activerecord,Enums,Rails Activerecord,我有一个包含状态枚举类型的工作模型 enum status: { beginning: 0, middle: 1, end: 2 } 在创建新的工作记录时,可能会出现这样的情况:传递的状态值类似于finished。那样的话,我会 `ArgumentError: 'finished' is not a valid status` 有没有办法将无效值映射为nil?这与default:nil不同,因为这仅在没有状态作为值给出时才适用 我是否需要挽救这个错误?正确的处理方法是什么?请提供一个例子 此

我有一个包含状态枚举类型的工作模型

enum status: { beginning: 0, middle: 1, end: 2 }
在创建新的工作记录时,可能会出现这样的情况:传递的状态值类似于
finished
。那样的话,我会

`ArgumentError: 'finished' is not a valid status`
有没有办法将无效值映射为nil?这与
default:nil
不同,因为这仅在没有状态作为值给出时才适用

我是否需要挽救这个错误?正确的处理方法是什么?请提供一个例子

此外,如果有差异,我的迁移文件如下所示:

 def change
    add_column :db_name, :status, :integer, default: nil
 end

你不认为让这样的事情隐式地过去是一种不好的做法吗?为什么你不能改变你的代码来停止传递错误的状态名呢?我是@nattfodd的。您可以覆盖模型中的
defstatus=(x)
,但我认为您最好将其升级一级。