2013-02-27 72 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