Почему не обновляются записи при миграции?

#ruby-on-rails #rails-activerecord #ruby-on-rails-6

#ruby-on-rails #rails-activerecord #ruby-on-rails-6

Вопрос:

Я написал этот код, в котором постарался показать все максимально прозрачно:

 Employee.find(7634).update!(company_id: 1)
 

Этот код абсолютно корректен и работает. Это работает rails c .

Но это не работает при миграции:

 class UpdatingCompaniesForEmployees < ActiveRecord::Migration[6.0]
  def change
    Employee.find(7634).update!(company_id: 1)
  end
end
 

SQL выглядит так при выполнении:

Обновление сотрудника (0,2 мс) ОБНОВЛЕНИЕ «employees» УСТАНОВИТЕ «updated_at» = $ 1, ГДЕ «employees».»id» = $ 2 [[«updated_at», «2020-12-16 17:08:38.131271″], [» идентификатор», 7634]]

То есть нет упоминания о компании.

Почему это происходит и как я могу это исправить?

Ответ №1:

 class UpdatingCompaniesForEmployees < ActiveRecord::Migration[6.0]
  def change
    Employee.reset_column_information
    Employee.find(7634).update!(company_id: 1)
  end
end