我们的系统中有一个布尔型字段(使用Rails 3.0.4),当连接到MySQL时,字段会根据情况报告true和false。当连接到Oracle(生产)时,它将返回Fixnum。该列的类型为NUMBER(1)。其他模型正确返回true和false。控制器正在做一个简单的查找。这只发生在演出中。索引返回true false。这发生在HTML和XML响应中。当询问字段的类型时,控制台报告一类FalseClass或TrueClass。该视图报告Fixnum。Rails:为什么我的布尔字段返回Fixnum?
什么可能会出错?
更新:代码
create_table "people", :force => true do |t|
t.string "name"
t.boolean "has_information"
end
class Person < ActiveRecord::Base
has_many :groups
end
与更清晰的问题
的Rails约定是使该领域的编号(1)型柱更新。然后将其转换为模型中的布尔值。这在我们的应用程序的几个模型中工作。只有一个模型有这个问题。而且它只在演出中有问题。展会行动是由脚手架创建的,因此非常通用。为什么Rails在这个例子中不遵循约定?
更新与解决方案
它是通过调用Person.find_by_id固定在此情况下(PARAMS [:编号])!而不是Person.find的(PARAMS [:编号])为什么默认是在正常发现中返回一个错误的类是不可能的。
向我们展示您的模型代码和schema.rb文件 – Gareth
我不确定这一点,但我认为Rails默认不支持Oracle?您使用的适配器是什么? –
OracleAdapter。 Oracle绝对支持。不是很好,但它被支持。 – Sixty4Bit