Я работаю с двумя моделями в рельсах
class Student < ApplicationRecord
belongs_to :school
has_many :lessons
end
и
class Lesson < ApplicationRecord
belongs_to :student, optional: true
end
Я действительно надеялся, что это приведет к тому, что Oracle сделает с FOREIGN KEY ON DELETE SET NULL
после того, как я делаю rails db: migrate: reset
Я получаю сгенерированный db / schema.rb со строкой
add_foreign_key "lessons", "students"
Чего я не ожидал, учитывая мои модели, так что
Я изменил его вручную до
add_foreign_key "lessons", "students", on_delete: :nullify
Независимо от того, что я делаю, я получаю нарушение внешнего ключа каждый раз, когда пытаюсь удалить студента, у которого есть уроки.
Почему schema.rb не отражает модели в первую очередь?
Почему таблицы не отражают изменения, которые я внес в schema.rb вручную?
Как удалить студента, не удаляя все уроки?