在Ruby on Rails中自动增加非主键字段

kin*_*rey 9 database migration ruby-on-rails primary-key auto-increment

在RoR迁移中,如何自动增加非主键字段?我想在db定义中执行此操作,而不是在模型中执行此操作.

use*_*660 9

您需要执行SQL语句.

statement = "ALTER TABLE `users` CHANGE `id` `id` SMALLINT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT" 
ActiveRecord::Base.connection.execute(statement)
Run Code Online (Sandbox Code Playgroud)

您可以在迁移中手动输入

请注意,这只是一个例子.最终的SQL语句语法取决于数据库.

  • 是的Rails不提供:迁移中的auto_increment关键字 (3认同)
  • 根据您的回答,Rails 没有提供一种无需直接执行 SQL 语句即可执行此操作的方法,我的假设是否正确?我希望像这样的东西: `t.integer :auto_i, :auto_increment => true` 能够工作(但事实并非如此)。 (2认同)
  • 请注意,这是“mysql”特定的解决方案。Postgres 不支持“AUTO_INCRMENT”。跳入这个问题以获取 Postgres 解决方案http://stackoverflow.com/questions/787722/postgresql-autoincrement (2认同)