在Rails中设置主键的初始值(即第一个对象的id为1000而不是1)

New*_*ewy 10 ruby-on-rails

什么是最好的解决方法.我可以在迁移中加入什么吗?提前致谢.

mol*_*olf 13

这是特定于数据库的.只需在迁移中执行以下操作:

class MyMigration < ActiveRecord::Migration
  def self.up
    create_table :my_table do |t|
      # ...
    end
    execute "ALTER TABLE my_table AUTO_INCREMENT = 1000" # for MySQL
  end

  def self.down
    # ...
  end
end
Run Code Online (Sandbox Code Playgroud)

或者甚至更好,正如Bane所建议的那样:

  def self.up
    create_table :my_table, :options => "AUTO_INCREMENT = 1000" do |t|
      # ...
    end
  end
Run Code Online (Sandbox Code Playgroud)

但是,请注意特定于数据库的迁移!使用任何特定于您的数据库的SQL将破坏与其他数据库的兼容性,通常不是一个好主意.


Bar*_*her 9

传递到":options"选项的任何字符串都将附加到创建表的SQL语句的末尾.最佳实践.

def self.up
    create_table :my_table, :options => "AUTO_INCREMENT = 1000" do |t|
      # ...
    end
end
Run Code Online (Sandbox Code Playgroud)