如何在 1 Rails 处重新启动记录 id

发布于 2024-12-09 07:13:50 字数 565 浏览 1 评论 0原文

我有一个 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

我无法删除数据库,因为某些表中将包含用户数据。

当我重新为表播种时,我需要将 id 重新启动为 1。

我怎样才能在 Rails 中做到这一点?

I have a rake task to populate a table.

as follows:

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

I can't drop the database as some tables will have user data in them.

I need to restart the id's at 1 when I re-seed the tables.

How can I do this in Rails?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

神妖 2024-12-16 07:13:50

如果您使用 PostgreSql,要重新启动序列:

ALTER SEQUENCE table_id_seq RESTART 1;

您还可以通过模型连接来执行此操作:

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

If you are using PostgreSql, to restart your sequence:

ALTER SEQUENCE table_id_seq RESTART 1;

You can also do that through the model connection:

MyModel.connection.execute('ALTER SEQUENCE my_models_id_seq RESTART 1')
慕烟庭风 2024-12-16 07:13:50

对于 mysql 尝试这个片段

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

For mysql try this snippet

ActiveRecord::Base.connection.execute('ALTER TABLE tablename AUTO_INCREMENT=1')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文