如何在1个Rails上重新启动记录ID

时间:2011-10-12 10:21:40

标签: ruby-on-rails-3 rake-task

我有一个rake任务来填充表格。

如下:

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处重新启动id。

如何在Rails中执行此操作?

2 个答案:

答案 0 :(得分:2)

如果您正在使用PostgreSql,请重新启动序列:

ALTER SEQUENCE table_id_seq RESTART 1;

您也可以通过模型连接来实现:

MyModel.connection.execute('ALTER SEQUENCE my_models_id_seq RESTART 1')

答案 1 :(得分:1)

对于mysql,请尝试使用此代码段

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