gpt4 book ai didi

ruby-on-rails - 将 bool 值传递给 update_attributes 的问题

转载 作者:数据小太阳 更新时间:2023-10-29 06:26:22 27 4
gpt4 key购买 nike

我有以下模型:

class GuestCatering < ActiveRecord::Base

# Validation
validates :name, :presence => true
validates :order_number, :presence => true
validates :orderable, :presence => true

end

但是当我尝试使用以下代码更新现有的 GuestCatering 时:

guest_catering.update_attributes(:orderable => false)

guest catering 变量是一个有效的 GuestCatering 对象。guest_catering对象更新后出现错误,像这样:

<{[:orderable, ["can't be blank"]]=>nil}>

但是当我传递一个 orderable => true 时,一切都很好,没有错误。

这里有什么问题,为什么我不能将 orderable 设置为 false?

最佳答案

通过使用 validates :orderable, :presence => true

,您的模型实际上完全按照您的指示行事

验证 bool 标志的存在没有什么意义——它将是 truenilfalse - 在 Ruby 世界中,就 bool 逻辑而言,nil 和 false 具有相同的语义值。

在内部,validates :presence 依赖于被检查的属性的值,以便在调用 blank? 时返回 false。而且,在 Rails 中(使用 ActiveSupport),false.blank? 评估为 true - 这意味着您的字段未通过验证。

只需删除该验证,一切都会按预期工作。

关于ruby-on-rails - 将 bool 值传递给 update_attributes 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5219150/

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