2013-04-20 39 views
0

也許我失去了一些東西,但我做了研究,並找不到爲什麼這是表現得像它一樣。我正在使用Rails 2.3.16和ruby 1.9.3,並由一個巨大的ibm-db2作爲後盾。Rails控制檯:屬性返回false,但用to_yaml正確顯示

讓我們假設我有一類Foo(我想在這裏建一個簡單的例子)

class Foo < ActiveRecord::Base 
end 

該類具有的屬性:電話(整數)和電子郵件(字符串)。如果我嘗試使用消氣方法來獲取phone -attribute

f = Foo.find_by_phone(123) 
=> #<Foo phone: false, mail: "[email protected]"> 

當我使用Rails的控制檯來調試

bundle exec ./script/console  , or 
RAILS_ENV=production bundle exec ./script/console 

我可以通過執行加載的Foo實例:

f.phone 
=> false 

但是信息必須存在,因爲導軌i)發現ob JECT和ii)你可以這樣做YAML輸出:對我的幫助提前

y f 
---- !ruby/object:Foo 
attributes: 
phone: 123 
mail: [email protected] 
attributes_cache: {} 

謝謝你們,我敢肯定,我忽略了的東西!

+0

'Foo.phone_before_type_cast'看起來是什麼樣,表的模式是什麼樣子? – Doon 2013-04-20 17:29:41

+0

你的課堂中是否有attr_accessor手機? – megas 2013-04-20 17:31:14

+0

@Doon:NoMethodError:未定義方法'phone_before_type_cast'for ... @megas:兩者都不適用。我嘗試添加attr_accessor:phone,然後f.phone返回nil,而yaml版本保持不變。 – user2302360 2013-04-20 17:56:21

回答

0

問題似乎是,ActiveRecord將DB2 short類型解釋爲布爾值。是否有可能改變這種(愚蠢的?)行爲?

相關問題