昨天在 staging 分支遇到个报错 但是切到 master 分支上 发现能够跑的很顺畅... 于是 就把两个分支报错的代码拿来对比 结果发现一模一样...
后来通过 console 进行测试 一个 order 的 state 里为 nil 导致的 但是为什么 master 分支不会报错呢 用的数据库都一样的啊!
后来经过一段时间的调试 发现 是自己用的两个 Gem enumerize 和 state_machine 都对 state 字段做了操作 可能是因为 gem 冲突的原因 导致的这个结果 (而且就一条纪录是这样的...)
以后大家如遇到类似情况 相同的数据库 相同的字段的内容不一样 可以用 .#{attribute}_before_type_cast
这个方法来查看数据库里该字段的原始值是什么 ( 例:本人此处为 order.state_before_type_cast
)
发现差异后 相信大家很快就能理清头绪了