ruby-on-rails - 为什么 Rails 在 schema.rb 中的所有列上设置 ":null => false"?

标签 ruby-on-rails

即使我从未在最初将列添加到表的迁移中指定 :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/

相关文章:

mysql - 在没有 Arel 的情况下如何在 Rails 中编写此查询

ruby-on-rails - rails 3.2.11 : Weird behaviour because of loading order of Controller and model

ruby-on-rails - 搜索项目所有 gem 源代码的最佳方式

python - Python 的 VirtualEnv 与 Ruby 的 RVM 本质上是一样的吗

java - 从 Android 上传图像时,Ruby 服务器上出现 argumenterror in utf-8 错误字节序列

ruby-on-rails - 如果 config.cache_classes = true,Rails 找不到模块

ruby-on-rails - rails + CarrierWave : NoMethodError: undefined method `image_url' for nil:NilClass

ruby-on-rails - Docker容器中的Rails加密凭据

sql - 查找字段值全部为 LOWERCASE 的记录

ruby-on-rails - 通过 DATABASE_URL 检查数据库状态