Как правильно добавить миграцию столбцов ссылок в Rails 6, не получая SQLite3::SQLException: Cannot add a NOT NULL column with default value NULL
?
Я могу взломать его, чтобы он заработал; но я готовлю учебник для выпускного класса, поэтому хочу убедиться, что я делаю это «по книге».
Отправной точкой является Post
класс (подумайте «пост в блоге») ). Я хочу добавить класс Author
и установить отношение «один ко многим» между авторами и публикациями. После добавления класса author
и запуска соответствующей миграции я создаю миграцию, чтобы добавить ссылку Author
на Post
:
rails g migration AddAuthorToPost author:references
Эта команда создает:
class AddAuthorToPost < ActiveRecord::Migration[6.0]
def change
add_reference :posts, :author, null: false, foreign_key: true
end
end
Проблема, конечно, в том, что SQLite жалуется, потому что не допускает возможности использования внешнего ключа null
- даже если таблица Post
пуста: ( Как решить «Не удается добавить столбец NOT NULL со значением по умолчанию NULL» в SQLite3? )
Я оглянулся на учебник предыдущего года (подготовленный другим инструктором), а генератор не добавил null: false
до миграции. (См. Также Добавление ссылочной миграции столбцов в Rails 5 )
Удаление null: false
из миграции позволяет запустить миграцию; но «отключение функций безопасности» не представляется целесообразным в классе:)
Есть ли лучший способ сделать это?