#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