即使我从未在最初向表添加列的迁移中指定:null => false
,rails仍会在schema.rb
中生成代码,将列指定为:null => false
。为什么是这样?如果我在我的盒子上开发,然后在我的生产盒上使用rake db:schema:load
,我将会遇到非常不同的行为!
编辑:即使我删除了schema.rb
并运行rake db:schema:dump
,它仍会将:null => false
放在新架构上,即使它没有像实际数据库中那样定义。它似乎无法判断列是否标记为允许空值。如果有帮助,我正在使用SQLite。
答案 0 :(得分:2)
我真的很讨厌这是如此微妙,但问题是我使用sqlite3
宝石而不是sqlite3-ruby
。一旦我在environment.rb中纠正它,一切都会好起来。
答案 1 :(得分:0)
恢复ruby 1.8.7为我做了诀窍。
不知道为什么。