将默认ActiveRecord id从0更改为1000000

时间:2010-03-11 11:19:19

标签: ruby-on-rails ruby activerecord

我想将创建对象的id的最小值从1更改为1000。 因此,当我在rails中创建我的第一个模型对象时,它获取ID 1000而不是1。

有没有办法在架构/迁移文件中设置它?

2 个答案:

答案 0 :(得分:5)

我不熟悉MySQL,但对于Postgres,您可以在迁移文件中执行以下操作:

class CreateCustomers < ActiveRecord::Migration
  def self.up
    create_table :customers do |t|
      t.string :name
      t.timestamps

    end
    execute "SELECT setval('customers_id_seq', 1000);"
end

请注意,execute方法调用是在create_table块之外进行的。

答案 1 :(得分:4)

对于MySQL使用

class CreateCustomers < ActiveRecord::Migration
  def self.up
    create_table :customers do |t|
      t.string :name
      t.timestamps

    end
    execute "ALTER TABLE customers AUTO_INCREMENT = 1000;"
end

这将使您的auto_increment字段(id)从值1000开始。