Rails Rails update_column 和 update_attribute 诡异的问题

moliliang · 2015年01月30日 · 最后由 blacktulip 回复于 2015年01月30日 · 3623 次阅读

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。。。?= =

最好能够贴一些你的操作,和具体的错误信息,当然还有运行环境。

update_column(s) 直接操作数据库。

update_attribute 只是跳过验证,但是依然会回调函数

update_attribute 更新这个值的時候,拋什麼錯?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号