> скажите, зачем вообще весь этот огород?
все дело в реляционных БД, которые не приспособлены для хранения объектов, которые описывают реальный мир (я имею в виду то, что создается когда ты говоришь
SomeClass.new). Пока хороших баз данных не придумано, есть движение в сторону NoSQL, это кое-что. Но в общем-то БД типа MySQL - это упорядоченная структура данных.
И этот ActiveRecord нужен чтобы просто твои объекты сохраняли свое состояние при перезапуске приложения, например. Этот процесс называется mapping. Несмотря на то, что процесс упростили, он все равно слегка геморный. 20 лет назад ты создавал иерархию классов, которые описывали бизнес-процесс за пару недель, и 2 месяца надо было на то, чтобы замэппить это все в базу данных. Сейчас попроще, но все равно это не так просто, как могло бы быть.
Миграция - вещь любопытная. Дело в том, что в БД существует ЕДИНСТВЕННЫЙ способ описания данных (говорят еще "схема"). Т.е. единственный формат, в котором лежат данные. Когда у тебя сайтик крутится в продакшне и ты добавляешь улучшение (к примеру, решаешь что теперь все юзеры должны иметь номер телефона), то у тебя меняется схема БД, меняется ее формат. И тебе нужна миграция, чтобы от одного формата перейти к другому, и чтобы при этом ничего не потерялось.
Как-то так