2013-02-27 94 views
1

使用ActiveRecord和Postgresql,創建!在新的創紀錄的業績不如預期,布爾真另存爲「T」ActiveRecord創建!使用Postgresql將布爾值保存爲't',但在更新/保存後更新爲1/0

SiteSetting.create!(:name => :enable_github, :value => true, :data_type => 5) 

=> :value => 't' 

但是,當我取的記錄,更改並保存它,值然後更改爲0虛假或1 true,如果我將它設置再次爲真。

setting = SiteSetting.where(:name => :enable_github).first 
setting.value = false 
setting.save 

=> :value => 0 

然後

setting.value = true 
setting.save 

=> :value => 1 

爲什麼是驅動更新值作爲一個整數,而不是「T」或「f」,因爲它應該PostgreSQL的?

回答

1

您在遷移中可能有value指定爲integer。它應該更改爲boolean

+0

啊,當然!它實際上指定爲文本,因爲它根據所存儲的設置保存多種數據類型。我被拋出的事實是,它在創建時如預期的那樣解釋布爾值,但在更新/保存時會不同。不用擔心,我們已經明確地設置了't'和'f'值。我只是好奇古怪的行爲。 – nverba 2013-03-04 13:40:51