gpt4 book ai didi

ruby-on-rails - Rails 4.2.0 中简单整数赋值的 RangeError 应该被验证捕获

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

* 更新:现在已在 4.2.stable 和 4.2.1 中修复 *

在 Rails 4.2.0(和当前的 4.2.stable)中,ensure_in_range 方法发生在 AR 验证之前,产生一个 RangeError

如果我做一些简单的事情

@obj.threshold = 10_000_000_000

在具有 postgres 类型整数的列上

 threshold  | integer                     | 

它产生

RangeError: 10000000000 is out of range for ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Integer with limit 4 from .../2.0.0-p598/lib/ruby/gems/2.0.0/bundler/gems/rails-62e9e61f2d1b/activerecord/lib/active_record/type/integer.rb:41:in `ensure_in_range'

这是真的!但告诉用户。有一个 ActiveRecord 模型验证,比如

  validates :threshold,  presence: true,
numericality: { greater_than_or_equal_to: 0, less_than: 1_000_000}

我无法想象这是预期的行为,有人可以解释为什么这种类型转换发生在验证之前吗?

最佳答案

获取最新的 rails 版本来修复这个错误,it was recently fixed by Sean Griffin

要在版本发布之前执行此操作,请删除 gemfile 中的特定版本并使用 git 位置提示:

gem 'rails', :git => 'https://github.com/rails/rails.git'

关于ruby-on-rails - Rails 4.2.0 中简单整数赋值的 RangeError 应该被验证捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28095568/

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