jos*_*eir 4 mysql activerecord ruby-on-rails
Rails 4.2.1 使用 mysql2 gem。ActiveRecord 将数据类型为布尔值的 mysql 列视为tinyint(1)布尔值。但我想将它用作一个小数字 - 我想存储最多 100 的值,这对于tinyint(1). 当我尝试创建记录时,tinyint 列会转换为false,并收到折旧警告:
> Foo.create(my_tinyint_col: 13)
(0.2ms) BEGIN
SQL (0.5ms) INSERT INTO `foos` (`my_tinyint_col`) VALUES (0)
(107.3ms) COMMIT
=> #<Foo ID: 519, my_tinyint_col: false>
Run Code Online (Sandbox Code Playgroud)
弃用警告:您尝试分配一个未显式的值
true或false分配给布尔列。目前该值转换为false. 这将更改以匹配 Ruby 的语义,并将在 Rails 5 中强制转换为true。如果您想维持当前行为,则应该显式处理您想要强制转换为的值false。
如果我更改 的数据定义,my_tinyint_col问题tinyint(2)就会消失 - 但有没有办法tinyint(1)使用 ActiveRecord 将其视为数字?
| 归档时间: |
|
| 查看次数: |
3672 次 |
| 最近记录: |