我們的系統中有一個布爾型字段(使用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