Auto increment a non-primary key field in Ruby on Rails
在RoR迁移中,如何自动递增非主键字段? 我想在db定义中执行此操作,而不是在模型中执行此操作。
您需要执行SQL语句。
1 2
| statement ="ALTER TABLE `users` CHANGE `id` `id` SMALLINT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT"
ActiveRecord::Base.connection.execute(statement) |
您可以在迁移中手动输入
请注意,这只是一个例子。 最终的SQL语句语法取决于数据库。
-
我是否正确地假设您的答案是Rails没有提供一种方法来执行此操作而不直接执行SQL语句? 我希望像t.integer :auto_i, :auto_increment => true这样的东西可以工作(但事实并非如此)。
-
是的Rails不提供:迁移中的auto_increment关键字
-
如果你想要Rails中的所有关键字或其他好东西那么。"rubymine IDE for ROR"非常有用。 我使用了6个月。
-
请注意,这是mysql特定的解决方案。 Postgres不支持AUTO_INCREMENT。 跳转到Postgres解决方案的问题stackoverflow.com/questions/787722/postgresql-autoincrement