通过rails中的迁移添加自动增量

时间:2014-08-07 11:32:40

标签: ruby-on-rails ruby ruby-on-rails-4

如何通过Rails Migration将自动增量属性添加到我的表user_number中名为users的列。

我已经有一个id字段,它是它的主键,它是一个自动增量字段。我试图创建一个新的自动增量字段而不删除此id字段..

2 个答案:

答案 0 :(得分:2)

class CreateSimpleModels < ActiveRecord::Migration
  def self.up
    create_table :simple_models do |t|
      t.string :name
      t.integer :user_number
      t.timestamps
    end
    execute "CREATE SEQUENCE simple_models_user_number_seq OWNED BY
simple_models.user_number INCREMENT BY 1 START WITH 1"
  end

  def self.down
    drop_table :simple_models
    execute "DELETE SEQUENCE simple_models_user_number_seq"
  end
end

答案 1 :(得分:1)

您可以直接修改您的mysql表。试试这个:

Alter table Tablename modify column ColumnName int(11) auto_increment;

您可以参考Auto increment a non-primary key field in Ruby on Rails以轨道方式执行它。

你也可以在创建方法中找到一个非常愚蠢的黑客,就像你的模型一样:

def self.create(user, user_number)
 user = User.new #update fields
 user.user_number += 1
 user.save
end

但是,我仍然会问为什么不将id本身用作user_number