Rails 3迁移:boolean(mysql vs postgreSQL)

Mar*_*jan 5 postgresql ruby-on-rails heroku rails-migrations ruby-on-rails-3

我正在尝试在论坛主题上添加"粘性"选项.这就是我的迁移方式

  def self.up
    add_column :topics, :sticky, :boolean, :null => false, :default => false
  end

  def self.down
    remove_column :topics, :sticky
  end
Run Code Online (Sandbox Code Playgroud)

这在mysql上本地完美,但当我将更改推送到heroku(使用PostgreSQL)时,这是我在使用控制台时得到的

>> t.sticky
=> "f"
>> t.sticky.class
=> String
>> t.sticky = true
=> true
>> t.sticky.class
=> TrueClass
Run Code Online (Sandbox Code Playgroud)

为什么此属性的默认值为String?

编辑:如果我保存对象,它不会改变粘性属性,即它仍然是"f".

Den*_*rdy 4

在 psql 中,布尔值显示为tor f。根据数据库驱动程序,它们会转换为布尔值或保留在字符串表示形式中。

PHP 中的 PDO 驱动程序执行相同的操作。(或者习惯了,无论如何......我隐约记得它在最新版本中不再这样做了。)

  • 我懂了。知道为什么 Rails 不自动将它们转换为布尔值吗? (2认同)