我的用户模型与此类似:
class User < ActiveRecord::Base
enum type: [:admin, :reviewer, :super_admin ]
validates :type, presence: true
validates :type, inclusion: { in: User.types.keys }
end
当我在枚举值之外提交任何内容时,验证不会阻止代码运行,并且我得到500错误作为响应,并出现以下错误:
'something submitted' is not a valid type
如果我提交一个空白字段,则验证有效:
"type": [
"can't be blank",
"is not included in the list"
]
我做错了什么?我的代码看起来与this answer
相同答案 0 :(得分:1)
Rails enum
doesn't have in-built validation.
AR枚举的当前焦点是将一组状态(标签)映射到一个 出于性能原因的整数。目前分配错误的状态是 考虑应用程序级别错误而不是用户输入错误。 这就是你得到ArgumentError的原因。
您仍然可以将nil
或空字符串设置为enum
属性而不会引发错误。