Цель идентификатора - быть не чем иным, как внутренним идентификатором. Это не должно использоваться публично вообще. Это не вещь Rails, а проблема с базой данных. MySQL не будет возвращать идентификаторы, потому что это может привести к очень серьезным осложнениям в вашем приложении. Если запись удалена, ее идентификатор остается навсегда, так что ни одна будущая запись не будет принята за нее.
Однако есть способ сделать то, что вы хотите. Я полагаю, что вы хотите вместо целого столбца position
. Добавьте это к вашей модели / таблице, а затем установите плагин acts_as_list .
Установите его обычным способом:
script/plugin install git://github.com/rails/acts_as_list.git
Затем добавьте «крючок» к вашей модели:
class Post < ActiveRecord::Base
acts_as_list
end
Теперь столбец position
вашей модели поста будет автоматически отслеживать себя без пробелов в последовательности. Это даже даст вам несколько удобных методов для повторного заказа, если вы того пожелаете.