У меня был небольшой опыт перемещения устаревших баз данных в Rails и доступа к базам данных Rails из внешних скриптов. Это похоже на то, что вы пытаетесь сделать. Мой опыт работы с базами данных Rails построен на основе MySQL, поэтому ваш пробег может отличаться.
Одно скрытое поле является наиболее очевидным - поле "id" (целое число), которое Rails использует в качестве первичного ключа по умолчанию. Если не указано иное, каждая модель в Rails имеет поле «id», которое является уникальным, увеличенным целочисленным первичным ключом. Это поле «id» будет появляться автоматически в любой модели, созданной в Rails посредством миграции, если вы не скажете Rails не делать этого (указав другое поле в качестве первичного ключа). Если вы работаете с базами данных Rails из-за пределов самого Rails, вы должны быть осторожны с этим значением.
Поле «id» является ключевой частью магии Rails, потому что оно используется для определения ассоциаций Rails. Скажем, вы связываете две таблицы вместе - группу и личность. Модель Group будет иметь поле «id», а модель Person должна иметь как собственное поле «id», так и поле «group_id» для отношения. Значение в "group_id" будет ссылаться на уникальный идентификатор связанной группы. Если вы построили свои модели таким образом, чтобы следовать этим соглашениям Rails, вы можете воспользоваться преимуществами ассоциаций Rails, сказав, что модель Group "has_many: people" и что модель Person "own_to: group".
Миграции Rails также по умолчанию хотят добавить поля «create_at» и «updated_at» (так называемые «метки времени»), которые являются полями datetime. По умолчанию они используют «магию» в базе данных, а не в самом Rails, для автоматического обновления при создании или изменении записи. Я не думаю, что эти столбцы сбивают вас с толку, потому что о них следует заботиться на уровне базы данных, а не с помощью какой-либо специальной магии Rails.