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