Установка начального значения для первичного ключа в Rails (т.е. Первый идентификатор объекта - 1000 вместо 1)

Какой лучший способ сделать это. Есть ли что-то, что я могу внести в миграцию? Спасибо заранее.

Ответ 1

Это конкретная база данных. Просто выполните в миграции следующее:

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

Или, действительно, еще лучше, как предложил Бейн:

  def self.up
    create_table :my_table, :options => "AUTO_INCREMENT = 1000" do |t|
      # ...
    end
  end

Будьте осторожны с миграциями, специфичными для базы данных, хотя! Использование любого SQL, специфичного для вашей базы данных, приведет к нарушению совместимости с другими базами данных и, как правило, не является хорошей идеей.

Ответ 2

Любая строка, переданная в опцию ": options", будет добавлена ​​в конец инструкции SQL, которая создает таблицу. Лучшая практика.

def self.up
    create_table :my_table, :options => "AUTO_INCREMENT = 1000" do |t|
      # ...
    end
end