我希望我的 Order 模型的 ID 从 1000 开始,并从那里自动递增计数。
这可以通过迁移来完成吗?
在您的迁移中,创建表后,使用以下内容更新序列:
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"
这尚未经过测试,我不确定您使用的是什么数据库。
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
如果您只需要从自定义数字(比如说 1001)开始表的 ID。
而且您不确定是否要为此编写迁移,您可以在以下位置运行以下命令rails console
:
ActiveRecord::Base.connection.execute("SELECT setval('table_name_id_seq', 1000)"
测试对我来说效果很好。希望有帮助。