gpt4 book ai didi

ruby-on-rails - Rails的存在验证失败,值为0

转载 作者:行者123 更新时间:2023-12-04 02:59:10 24 4
gpt4 key购买 nike

我有一个类似于以下的模型,

class Activity < ActiveRecord::Base
attr_accessible :name, :admin

validates :name, :presence => true
validates :admin, :presence => true
end

name属性是一个字符串,而admin属性在迁移中定义为 bool 值。

如果我尝试使用在控制台中创建模型的实例,
a = Activity.create(:name => 'Test', :admin => 0)

然后验证失败,提示我需要为Admin提供值。为什么?我提供了一个值。

我可以理解我是否根本无法提供值,或者是否提供了零值。但是,为什么像0这样的值(或什至是false)导致验证失败?

最佳答案

validates :presence使用blank?来确定是否存在值。但是false.blank? => true。因此验证失败,因为blank?告诉ActiveRecord不存在任何值。

您可以将其重写为:
validates :field_name, :inclusion => { :in => [true, false] }
按照Rails Guides: ActiveRecord Validations的建议

另请参阅A concise explanation of nil v. empty v. blank in Ruby on Rails

关于ruby-on-rails - Rails的存在验证失败,值为0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13226260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com