gpt4 book ai didi

ruby-on-rails - 验证接受始终失败

转载 作者:行者123 更新时间:2023-12-03 08:50:14 25 4
gpt4 key购买 nike

我看不到我所缺少的东西,但是显然不对。

在模型中:

validates :terms, :acceptance => true, :on => :update

尝试一些选择:
>> a = Factory(:blog_agreement)
=> #<BlogAgreement id: 54, terms: false, created_at: "2011-01-20 11:33:03", updated_at: "2011-01-20 11:33:03", accept_code: "fa27698206bb15a6fba41857f12841c363c0e291", user_id: 874>

>> a.terms
=> false

>> a.terms = true
=> true
>> a.save
=> false

>> a.terms = "1"
=> "1"
>> a.save
=> false

>> a.terms = 1
=> 1
>> a.save
=> false
>> a.errors.full_messages
=> ["Terms must be accepted"]

最佳答案

更新的答案..
因此,事实证明问题出在表中的术语是实际列。通常,validates_acceptance_of是不带此列使用的,在这种情况下,它将定义属性访问器并将其用于验证。
为了使validates_acceptance_of映射到真实表列时起作用,必须传递:accept选项,例如:

validates :terms, :acceptance => {:accept => true}
其原因与Active Record中的类型转换有关。当命名属性实际存在时,AR根据数据库列类型执行类型转换。在大多数情况下,acceptance列将被定义为 bool(boolean) 值,因此 model_object.terms将返回true或false。
当没有此类列时, attr_accessor :terms只需从params哈希返回传入模型对象的值,该值通常是复选框字段中的 "1"

关于ruby-on-rails - 验证接受始终失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4746710/

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