如何在Ruby中将8位unsigned int转换为整数或字符串

时间:2012-01-19 09:14:02

标签: ruby

我查询数据表单数据库,我得到8位无符号int,但我不能使用它,因为ruby会将其更改为boolean。

我可以将8位无符号整数转换为整数或字符串吗?

谢谢

1 个答案:

答案 0 :(得分:0)

这发生在ActiveRecord和MySQL上,它将tinyint(1)(一个8位整数)视为一个布尔值,因为MySQL在5.0之前没有任何布尔类型(它现在有BIT)。您可以完全禁用此行为,但我不知道每个字段或每个模型禁用它的方法,因此如果禁用它,则会丢失其他字段上的“布尔”行为。幸运的是,这可能不是什么大问题,因为在大多数情况下0仍然是假的,其他任何东西仍然是真的。

您可以将其添加到config/application.rb

中来禁用它
ActiveRecord::ConnectionAdapters::Mysql2Adapter.emulate_booleans = false

请参阅the ActiveRecord API docs