即使我从未在最初将列添加到表的迁移中指定 :null => false
,rails 仍会在 schema.rb
中生成代码,将列指定为有 :null => false
。为什么是这样?如果我在我的机器上开发,然后在我的生产机器上使用 rake db:schema:load
,我会得到非常不同的行为!
编辑:即使我删除 schema.rb
并运行 rake db:schema:dump
,它仍然会显示 :null => false
在新模式上,即使它没有像实际数据库中那样定义。它似乎无法判断列是否被标记为允许空值。如果有帮助,我正在使用 SQLite。
最佳答案
我真的很讨厌这太微妙了,但问题是我使用的是 sqlite3
gem 而不是 sqlite3-ruby
。一旦我在 environment.rb 中更正了它,一切都变得更好了。
关于ruby-on-rails - 为什么 Rails 在 schema.rb 中的所有列上设置 ":null => false"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2563297/