Как я могу перезапустить идентификаторы записи на 1 Rails - PullRequest
0 голосов
/ 12 октября 2011

У меня есть грабли для заполнения таблицы.

следующим образом:

namespace :db do
  desc  "fill in the database with icons data"
  task :populate_icons => :environment do 
    make_types
    make_templates
    make_categories
    make_greeting_icons
    make_user_icons
  end
end

  def make_types
    Type.delete_all
    types = %w{Classic Popular Children Animals}
    types.each do |type|   
      Type.create!(:name => type, :adult => false) #1
    end
  end

Я не могу удалить базу данных, так как в некоторых таблицах есть пользовательские данные.

Мне нужно перезапустить идентификаторы на 1, когда я заново заполню таблицы.

Как я могу сделать это в Rails?

Ответы [ 2 ]

2 голосов
/ 12 октября 2011

Если вы используете PostgreSql, чтобы перезапустить последовательность:

ALTER SEQUENCE table_id_seq RESTART 1;

Вы также можете сделать это через подключение модели:

MyModel.connection.execute('ALTER SEQUENCE my_models_id_seq RESTART 1')
1 голос
/ 12 октября 2011

Для mysql попробуйте этот фрагмент

ActiveRecord::Base.connection.execute('ALTER TABLE tablename AUTO_INCREMENT=1')
...