gpt4 book ai didi

ruby-on-rails - Ruby on rails 如何通过迁移文件删除添加的列和插入新列

转载 作者:太空宇宙 更新时间:2023-11-03 17:05:26 26 4
gpt4 key购买 nike

嗨,我创建了一个 Ruby on rails 迁移文件,如下所示,在第一阶段我创建了表

然后我想添加列并删除一些列我修改如下

class CreateMt940Batches < ActiveRecord::Migration
def change
create_table :mt940_batches do |t|
t.string :account_number
t.string :transaction_reference_number
t.string :information_to_account_owner
t.string :file_name
t.binary :raw_data_transaction
t.string :sha1_checksum
t.timestamps
end

def self.down
remove_column :account_number, :transaction_reference_number, :information_to_account_owner
end

def self.up
add_column :mt940_batches, :created_by, :updated_by, :integer
end
end
end

但是当我运行 rake db:migrate 时什么也没有发生。如何完成这个任务。我也想从这个迁移文件中更改已经创建的模型。嗯,正在寻找一种方法来做到这一点。提前谢谢你

最佳答案

您应该在单独的迁移文件中添加删除/添加列。

class FooMigration < ActiveRecord::Migration
def down
remove_column :account_number, :transaction_reference_number, :information_to_account_owner
end

def up
add_column :mt940_batches, :created_by, :updated_by, :integer
end
end

请注意,您的updown 方法应该是相同的。在调用 rake db:migrate:downrake db:migrate:up 时,您应该能够从一个转到另一个。这里不是这种情况。

但是在这里,您似乎希望在一次迁移中实现 2 个不同的目标。如果您想添加和删除列,请考虑将每个列移动到不同的迁移文件中:

请阅读here了解更多详情

你最终会得到这样的 2 个迁移文件:

class RemoveFieldsFromMt940Batches < ActiveRecord::Migration
def change
remove_column :mt940_batches, :account_number, :transaction_reference_number, :information_to_account_owner
end
end

class AddFieldsToMt940Batches < ActiveRecord::Migration
def change
add_column :mt940_batches, :created_by, :updated_by, :integer
end
end

关于ruby-on-rails - Ruby on rails 如何通过迁移文件删除添加的列和插入新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17967329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com