Возможно, мне придется сделать это через прямой SQL в sqlite?
Да.
Весь смысл ActiveRecord в том, что он абстрагирует функции БД и просто возвращает коллекции данных. Вы не должны беспокоиться об идентификаторе записи, это что-то специфическое для БД. Сверху головы я не могу придумать никаких причин ссылаться на идентификатор модели.
Если ваше приложение зависит от наличия порядкового номера, вам следует добавить другое поле в модель, которая имеет это. Например, если у меня есть магазин с продуктами (модель продукта), и я даю идентификационный номер, который БД предоставляет другим поставщикам. Две недели спустя мой начальник просит у меня уникальный, но схожий идентификатор для двух вариантов продуктов: «45a» и «45b». Гайки. Поле идентификатора должно использоваться только для базы данных и ActiveRecord , а не для вас или ваших пользователей, для идентификации записи.
Существует небольшая вероятность того, что может быть неясным методом, который принудительно устанавливает идентификатор, если БД это позволяет, но он неясен по причине. Не пытайтесь найти это :)
При этом наберите ruby script/dbconsole
, чтобы быстро открыть интерфейс sqlite без необходимости ввода пароля.
Кроме того, если вы удалите базу данных sqlite, которая сбросит счетчик и начнёт с 0. С большой силой приходит большая ответственность.
EDIT
Если я правильно помню, Дейв Томас где-то писал об этом. Возможно здесь ?