【问题标题】:ActiveRecord create! with Postgresql saves Boolean as 't', but updates to 1/0 after update/saveActiveRecord 创建!使用 Postgresql 将布尔值保存为“t”,但在更新/保存后更新为 1/0
【发布时间】:2013-03-04 12:58:19
【问题描述】:

在 Postgresql 中使用 ActiveRecord,创建!按预期生成新记录,布尔值 true 保存为 't'

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

=> :value => 't'

但是当我获取记录、更改并保存它时,如果我再次将其设置为 true,则该值会更改为 0 表示 false 或 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 中使用?

【问题讨论】:

    标签: postgresql activerecord boolean


    【解决方案1】:

    您可能在迁移中将value 指定为integer。应该改成boolean

    【讨论】:

    • 啊,当然!它实际上被指定为文本,因为它根据存储的设置保存多种数据类型。我被它在创建时按预期解释布尔值的事实所震惊,但在更新/保存时却不同。不用担心,我们已经明确设置了 't' 和 'f' 值。我只是好奇这种古怪的行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 2020-09-26
    • 2018-07-05
    • 1970-01-01
    相关资源
    最近更新 更多