Rails数值验证失败,具有Fixnum值

时间:2017-05-18 15:24:00

标签: ruby-on-rails ruby validation ruby-on-rails-4 activerecord

我使用Ruby 2.2.3和Rails 4.2.8以及Oracle DB。我有一个名为Historico的模型,它具有以下验证:

validates :anosemestre, presence: true, numericality: { only_integer: true }

此外,在我的架构中,我有anosemestre列的正确声明:

t.integer 'anosemestre'

我试图通过像(历史悠久的数据库中的新鲜事物)这样的东西将旧历史记录克隆到新历史记录中:

attributes = historico_old.attributes
attributes.delete('id')
historico_novo = Historico.new(attributes)
binding.pry # for debug, obviously
(...)
historico_novo.save

但是当我尝试保存它时,验证失败说anosemestre不是数字。当我调试它时,我从pry得到以下输出,这让我更加困惑:

[1] pry(Historico)> historico_novo.valid?
  => false
[2] pry(Historico)> historico_novo.errors.messages
  => {:anosemestre=>["is not a number"]}
[3] pry(Historico)> historico_novo.anosemestre
  => 20171
[4] pry(Historico)> historico_novo.anosemestre.class
  => Fixnum
[5] pry(Historico)> historico_novo.anosemestre = historico_novo.anosemestre.to_i
  => 20171
[6] pry(Historico)> historico_novo.anosemestre.class
  => Fixnum
[7] pry(Historico)> historico_novo.valid?
  => true

这个问题在我们拥有的任何其他模型中都没有发生(我们有很多),并且只有在我将属性从一个历史文件复制到另一个历史文件时才会发生。我绝对不知道如何从这里开始,还有其他人以前遇到过这个问题吗?

0 个答案:

没有答案