Rails 4.2中的枚举验证不起作用

时间:2015-06-17 15:44:39

标签: ruby-on-rails validation enums

我的用户模型与此类似:

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

相同

1 个答案:

答案 0 :(得分:1)

Rails enum doesn't have in-built validation.

  

AR枚举的当前焦点是将一组状态(标签)映射到一个   出于性能原因的整数。目前分配错误的状态是   考虑应用程序级别错误而不是用户输入错误。   这就是你得到ArgumentError的原因。

您仍然可以将nil或空字符串设置为enum属性而不会引发错误。