Ruby on rails 这是'中可能存在的错误吗;activerecord jdbc适配器';当你试图快速加载时?
我们有以下型号: payment.rb:Ruby on rails 这是'中可能存在的错误吗;activerecord jdbc适配器';当你试图快速加载时?,ruby-on-rails,activerecord,jdbc,jruby,jrubyonrails,Ruby On Rails,Activerecord,Jdbc,Jruby,Jrubyonrails,我们有以下型号: payment.rb: class Payment < ActiveRecord::Base has_many :currencies default_scope :include => :currencies end ... owner_key = record[association_key_name].to_s owners_map[owner_key].each do |owner| ... 问题可在以下方面找到: 第88行和第89行中: c
class Payment < ActiveRecord::Base
has_many :currencies
default_scope :include => :currencies
end
...
owner_key = record[association_key_name].to_s
owners_map[owner_key].each do |owner|
...
问题可在以下方面找到:
第88行和第89行中:
class Payment < ActiveRecord::Base
has_many :currencies
default_scope :include => :currencies
end
...
owner_key = record[association_key_name].to_s
owners_map[owner_key].each do |owner|
...
当我逐步浏览代码时,我可以看到
record[association\u key\u name]
是一个大十进制,例如108.0,当应用到
时,它变成了“108.0”。但是,owners\u map
hash中的键应为“108”,而不是“108.0”
association\u key\u name
是Oracle数据库中外键的名称,定义为类型编号。主键也被定义为类型Number,但奇怪的是它没有解析为BigDecimal
有什么想法吗?这是一个可能的错误吗?或者数据库列的精度是否需要更改
系统信息:JRuby on Rails(3.2.1)
ActiveRecord JDBC适配器
Oracle数据库(使用视图而不是表)
问题源于数据库上的外键被定义为具有精度的数字。谢谢你给我指点这篇文章
我让我们的DBA消除了现场的精度,一切都很好。当然,我们很幸运能够构建一个新产品,在这个新产品中,我们的模式可以很容易地更改…是的,Oracle中的数字数据类型的精度大于0。如果Rails生成了列(定义为:integer),那么这可能是Rails的错误。如果表中存在一个类型为Number且精度大于0的外键,则它是一个bug。。。或者至少是一个等待发生的问题。事实上,我想它不会再等了:-)。我通过谷歌快速搜索找到了这个(很久以前的)链接:谢谢你的链接!事实上,我正在使用视图包装表,所以我将研究如何消除精度。这个问题仍然困扰着jRuby、Oracle JDBC和Rails 4.1.5。有人找到了新版本JDBC的补丁吗