PostgresqlでActiveRecordを使用して、作成します。ブール値trueが't'として保存された、期待どおりの新しいレコードが生成されます
SiteSetting.create!(:name => :enable_github, :value => true, :data_type => 5)
=> :value => 't'
しかし、レコードをフェッチして変更して保存すると、値を0に変更するとfalseになり、再度trueに設定すると1に変更されます。
setting = SiteSetting.where(:name => :enable_github).first
setting.value = false
setting.save
=> :value => 0
その後
setting.value = true
setting.save
=> :value => 1
なぜドライバーはpostgresqlの場合のように「t」や「f」ではなく整数として値を更新するのですか?