gpt4 book ai didi

ruby-on-rails - Rails bool 值错误?

转载 作者:行者123 更新时间:2023-12-04 05:40:54 24 4
gpt4 key购买 nike

我在处理 Rails 中的 bool 值时遇到了一个相当神秘的问题,这里是如何重现:

  • rails new boolean_bug
  • rails 生成模型用户验证:boolean

  • 有了这个,您应该有一个带有 User 模型的空项目。

    3 内部 boolean_bug/app/models/user.rb

    '
    class User < ActiveRecord::Base
    before_save :set_false
    attr_accessible :verified

    private
    def set_false
    self.verified = false
    end
    end

    4 在控制台中知道重现:
    $rails -v 
    Rails 3.0.1

    $ rails console --sandbox
    ruby-1.9.2-p0 > User.create!
    ActiveRecord::RecordNotSaved: ActiveRecord::RecordNotSaved
    from /Users/dpalacio/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.1/lib/active_record/persistence.rb:56:in `save!'
    from /Users/dpalacio/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.1/lib/active_record/validations.rb:49:in `save!'
    from /Users/dpalacio/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.1/lib/active_record/attribute_methods/dirty.rb:30:in `save!

    5 换 self.verified = falseself.verified = 0
    6 再次进入控制台
    ruby-1.9.2-p0 > User.create!
    => #<User id: 1, verified: false, created_at: "2010-10-31 04:23:13", updated_at: "2010-10-31 04:23:13">

    所以关键是使用 false 保存不起作用,但是 true, 1, 0 起作用,这是一个错误吗?还是我做错了什么?

    最佳答案

    抱歉不是 rails 错误,实际上是因为 before_filter 从赋值中返回 false,因此事件记录不会保存。

    关于ruby-on-rails - Rails bool 值错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4061882/

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