Rails 的版本是 3.2。
碰到一个诡异的问题,是这样的。 我新建一个数据库字段 ABCD(boolean 型),然后因为需求改变,改成 integer 型。字段名称不变(依然是 ABCD)。
然后我使用 update_attribute 来修改 ABCD 这个字段的值的时候,可以改成 0 或者 1,就是无法改成 2(或者说非 boolean 的值都不可以了)。 提示这个值是只读的。加上 readonly(false) 来进行查询,也无济于事。
然后使用 update_column 来更新字段成功。
因为 update_column 无需走 Rails 的验证流程,那么就是 update_attribute 走了验证流程,update_attribute 会验证这个值是否为 boolean 型。
可是我已经彻底将该字段改成 int 型了,不管是数据库还是 Schema.rb 文件中。
那么。。。为什么 update_attribute 来更新这个值就是无法成功呢(只能更新为 bool 型,无法是其他的整数)。。。
谢谢。。。感觉是 Rails 的 bug。。。?= =