我有一个试图在其上添加验证的枚举,但是当我在数据库中保存任何记录时,它给了我一个类型错误,即数组既不是符号也不是字符串。这是代码:
validates :animal, inclusion: { in: %w(DOG, CAT), message: '%{value} is not a valid animal' }
enum animal: [:DOG, :CAT]
我收到以下错误: TypeError:[“ DOG”,“ CAT”]既不是符号也不是字符串
答案 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)