保存对象时枚举验证中的类型错误



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

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

我收到以下错误:类型错误: ["DOG", "CAT"] 不是符号也不是字符串

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)

相关内容

最新更新