【发布时间】:2015-09-27 17:16:07
【问题描述】:
目前,我的模型和验证是这样的:
class Suya < ActiveRecord::Base
belongs_to :vendor
validates :meat, presence: true
validates_inclusion_of :spicy, :in => [true, false]
end
问题是当我运行这个测试时:
test "suya is invalid if spiciness is not a boolean" do
suya = Suya.new(meat: "beef", spicy: 1)
suya1 = Suya.new(meat: "beef", spicy: "some string")
assert suya.invalid?
refute suya1.valid?
end
我收到一条弃用警告:
弃用警告:您尝试分配的值不是 将
true或false显式添加到布尔列。目前这个值 转换为false。这将改变以匹配 Ruby 的语义,并将 在 Rails 5 中转换为true。
所以我认为我的验证没有做我认为应该做的事情。我认为我的验证检查列值的存在以及它是否是或转换为真或假。所以我认为我的测试装置都转换为假,因此通过了我不想要的测试。我能做什么?
【问题讨论】:
标签: ruby-on-rails