Казалось бы знаешь уже рельсу вдоль и поперек, но внезапно банальная миграция подкинула седых волос. Дабы больше не ходить по этим граблям опишу всю боль ниже в назидание себе.
Итак ничего не предвещало и нужно-то было всего удалить связь между таблицами.
1 | remove_column :earnings, :shipment_id |
Любые способы удалить это поле в БД натыкались на сообщение, что такого поля нет.
1 | rails aborted! |
Но как нет если оно таки есть? Это очевидная дезинформация. При этом как я проверил другие поля удалялись без проблем, то есть это не какая-то случайная проблема.
Естественно мысли начали двигаться в сторону индексов в БД, ибо больше зацепиться было не за что. И это было не зря. После долгих мытарств и экспериментов я таки нашел виновника моих злоключений.
Как оказалось виновником проблемы оказалось участие этого поля в составном индексе в одной из миграций ранее
1 | add_index :earnings, %i[store_id line_item_id shipment_id], unique: true |
После удаления поля из индекса, удаление самого поля прошло без проблем.
В общем конечно я таки виню в этой проблеме рельсу — сообщение об ошибке очевидно сбивало с толку и не соответствовало
реально возникшей проблеме.
Комментарии