ruby-on-rails 在Rails中通过迁移添加自动增量

r6l8ljro  于 2023-04-08  发布在  Ruby
关注(0)|答案(3)|浏览(131)

如何通过Rails Migration向表users中名为user_number的列添加自动增量属性。
我已经有一个id字段,这是它的主键,它是一个自动增量字段。我试图创建一个新的自动增量字段,而不删除此id字段。

tvz2xvvm

tvz2xvvm1#

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
pkwftd7m

pkwftd7m2#

你可以直接修改你的mysql表,试试这个:
Alter table Tablename modify column ColumnName int(11) auto_increment;
您可以引用Auto increment a non-primary key field in Ruby on Rails以rails方式执行它。
你也可以想出一个非常愚蠢的方法,比如在你的模型中,在create方法中:

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

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

e0uiprwp

e0uiprwp3#

对于Rails 6 +

add_column :table_name, :column_name, :type, autoincrement: true

相关问题