У меня есть две модели:
Factory
belongs_to :owner, optional: true
и
Owner
has_many :factories
Новая ситуация: я хотел бы добавить новую ассоциацию original_ower где
Factory
belongs_to :original_owner,class_name: 'Owner', foreign_key: 'original_owner_id', optional: true
belongs_to :owner, optional: true
гдея бы скопировал значение из владельца в original_owner за один раз. с этого момента владелец должен быть изменен через интерфейс. Я создал задачу миграции:
class AddOriginalOwner < ActiveRecord::Migration[5.2]
def change
add_reference(:factories, :original_owner, foreign_key: {to_table: :owners})
reversible do |direction|
direction.up do
Factory.all.each { |c| c.update(original_owner: c.owner) }
end
end
end
end
, однако, когда я запускаю rails db:migrate
, он возвращает ошибку в соответствии с:
Mysql2::Error: Referencing column 'original_owner_id' and referenced column 'id' in foreign key constraint 'fk_rails_b587c8547c' are incompatible.: ALTER TABLE `factories` ADD CONSTRAINT `fk_rails_b587c8547c`
FOREIGN KEY (`original_owner_id`)
REFERENCES `owners` (`id`)
Кто-нибудь случайно понял, чтопродолжается? или где исследовать? Danke schon,
ОБНОВЛЕНИЕ: я добавляю type: :integer
к задаче миграции, и она выполняется, но кажется очень длинной
add_reference(:companies, :original_employee, foreign_key: {to_table: :employees}, type: Integer)