保存对象时枚举验证中的TypeError

时间:2019-01-13 08:52:29

标签: ruby-on-rails ruby validation

我有一个试图在其上添加验证的枚举,但是当我在数据库中保存任何记录时,它给了我一个类型错误,即数组既不是符号也不是字符串。这是代码:

validates :animal, inclusion: { in: %w(DOG, CAT), message: '%{value} is not a valid animal' }
enum animal: [:DOG, :CAT]

我收到以下错误: TypeError:[“ DOG”,“ CAT”]既不是符号也不是字符串

1 个答案:

答案 0 :(得分:0)

ActiveRecord eunm不需要单独的验证即可检查包含。只需删除该自定义验证即可。当您使用不属于枚举值列表的值时,默认情况下,Rails会引发错误。

在Rails 5.2.2中进行了测试:

class Person < ActiveRecord::Base
  enum animal: [:DOG, :CAT]
end

测试:

p = Person.new
=> #<Person ...>

p.animal = :DOG # this works
p.animal = :FROG

Traceback (most recent call last):
ArgumentError ('FROG' is not a valid animal)