ruby-on-rails Rails迁移,如何更改表列

qnzebej0  于 2023-05-08  发布在  Ruby
关注(0)|答案(1)|浏览(132)

我知道通常当我们想要改变rails数据库中表的一列时。但现在我想对我的项目表和示例表做一个大的更改。实现这一目标的最佳途径是什么?本来

projects table:
class CreateProjects < ActiveRecord::Migration[6.0]
  def change
    create_table :projects do |t|
      t.string :name
      t.string :project_id1
      t.string :project_id2
      t.text :curated_description
      t.integer :num_of_samples
      t.integer :num_of_runs
      t.integer :population
      t.text :related_publications
      t.text :original_description

      t.timestamps
    end
  end
end

样品表:

class CreateSamples < ActiveRecord::Migration[6.0]
  def change
    create_table :samples do |t|
      t.string :sample_name
      t.string :project_name
      t.string :run_id
      t.string :second_run_id
      t.string :meta_project_id
      t.string :experiment_type
      t.string :nr_reads_sequenced
      t.string :instrument_model
      t.string :disease_phenotype
      t.string :is_disease_stage_available
      t.string :disease_stage
      t.text :more
      t.text :more_info
      t.string :country
      t.string :collection_date
      t.string :sex
      t.integer :host_age
      t.string :diet
      t.string :longitude
      t.string :lattitude
      t.float :BMI
      t.string :associated_phenotype
      t.string :QC_status
      t.text :recent_antibiotics_use
      t.text :antibiotics_used
      t.text :antibiotics_dose
      t.integer :days_without_antibiotics_use
      t.text :original_description
      t.text :curated_description
      t.references :project, null: false, foreign_key: true

      t.timestamps
    end
  end
end

这两个迁移文件是我的迁移文件中最早的两个文件。首先,我想删除这两个文件(还有一个与这两个表相关的连接表,我也删除了它),并且我已经运行了数据库迁移来删除它们。但是,当我想使用

rails generate migration createProjects

它告诉我,有一个冲突,因为我们已经有一个名为xxx_creat_projects的文件,我知道这是我创建的最早的一个,但我已经创建了迁移删除旧表,现在我如何创建一个新的项目和样本表。或者最好有人能告诉我如何实现这一点(对这些表进行大的更改,因为我必须更改很多列)。谢谢!

rsaldnfx

rsaldnfx1#

首先,您需要通过运行以下命令创建迁移文件:

rails generate migration YourMigrationName

然后编辑迁移文件并添加更改方法定义,如下所示:

def change
  change_column :table_name, :column_name, :new_type
end

相关问题