Миграция Rails для столбца идентификатора начинается с 1000 и автоинкремента вверх оттуда?

Я бы хотел, чтобы идентификатор моей модели Order начинался с 1000 и автоматически увеличивался оттуда.

Можно ли это сделать с помощью миграции?


person Jordan Feldstein    schedule 22.08.2012    source источник
comment
полное предположение, но вы пробовали create_table :whatever_table, :id => 1000 do |t|   -  person Kyle C    schedule 22.08.2012
comment
Какую базу данных вы используете? например mysql, postgresql и т. д.?   -  person Serge Balyuk    schedule 22.08.2012
comment
В настоящее время используется Sqlite3, скоро будет переход на postgres.   -  person Jordan Feldstein    schedule 22.08.2012


Ответы (2)


В вашей миграции после создания таблицы обновите последовательность примерно так:

create_table :products do |t|
  t.string  :name
  # other stuff
end

# for Postgres
execute "SELECT setval('products_id_seq', 1000)"

# and for mysql ...
execute "ALTER TABLE products AUTO_INCREMENT = 1000"
person Serge Balyuk    schedule 22.08.2012
comment
Как таким образом присвоить идентификатор таблицы продуктов ‹ 1000? - person William Hu; 26.03.2015

Это не тестировалось, и я не уверен, какую базу данных вы используете.

create_table(:order, :id => false) do |t|
   t.integer :id, :options => 'PRIMARY KEY', :default => 1000

или если у вас уже есть таблица, попробуйте эту миграцию

def change
  execute "ALTER TABLE orders AUTO_INCREMENT = 1000"
end
person Kyle C    schedule 22.08.2012