Я следовал инструкциям по установке для проекта Rails, над которым мне поручено работать.Однако после создания базы данных и выполнения миграций с bundle exec
значение db/schema.rb
изменится.Основное изменение заключается в том, что временные метки created_at
и updated_at
теряют ограничение null: false
.Например:
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at"
+ t.datetime "updated_at"
Проект является Rails 4.2 и Ruby 2.4.1.
Однако изначально он был написан с использованием Rails 3.2 и Ruby 1.9.2, поэтому существует вероятность того, что часть старого кода/ config в игре (?)
Я использую PostgreSQL: 'pg', '~> 0.17'
.
Итак: кто-нибудь знает, почему null: false
покинул схему?
Я бы очень хотелЯ хотел бы сохранить ограничения null: false
, и, думаю, я могу добавить их обратно в миграцию, но я очень озадачен, почему ограничения исчезли из схемы.
отредактировано для добавления :
- В миграциях, где определены t.timestamps
, нет ограничения null: false
- Нет нулевого ограничения наполя в фактической базе данных.
Могли ли более ранние версии ActiveRecord добавить нулевое ограничение по умолчанию?
Я искал ответы, но не нашел много. Эта проблема rails сообщает о том же, но для Oracle.
Здесь, при переполнении стека, mysql - Rails: различия в столбцах db / schema.rb - null: false в колонках create_at / updated_at - это та же проблема, но предложенное решение (сбросить БД и создать заново) мне не помогло.