为什么rails在schema.rb中的所有列上都设置了“:null => false”?

时间:2010-04-01 20:03:43

标签: ruby-on-rails

即使我从未在最初向表添加列的迁移中指定:null => false,rails仍会在schema.rb中生成代码,将列指定为:null => false。为什么是这样?如果我在我的盒子上开发,然后在我的生产盒上使用rake db:schema:load,我将会遇到非常不同的行为!

编辑:即使我删除了schema.rb并运行rake db:schema:dump,它仍会将:null => false放在新架构上,即使它没有像实际数据库中那样定义。它似乎无法判断列是否标记为允许空值。如果有帮助,我正在使用SQLite。

2 个答案:

答案 0 :(得分:2)

我真的很讨厌这是如此微妙,但问题是我使用sqlite3宝石而不是sqlite3-ruby。一旦我在environment.rb中纠正它,一切都会好起来。

答案 1 :(得分:0)

恢复ruby 1.8.7为我做了诀窍。

不知道为什么。