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)
,但我认为您最好将其升级一级。