大家好,我想知道如果您尝试回滚迁移只是为了更新架构,是否有办法不丢失数据?例如,在运行 rake db:migrate 之后,在插入几轮数据之后,您想要在模式中添加一个新属性。
所以我的问题是如何在不丢失以前记录的情况下添加新属性?可以这样做吗?因为所有这一切,而我只是通过运行 rake db:rollback STEP= ... 并丢失了我生成的所有数据。就是想。
感谢您的帮助来自:BC2
大家好,我想知道如果您尝试回滚迁移只是为了更新架构,是否有办法不丢失数据?例如,在运行 rake db:migrate 之后,在插入几轮数据之后,您想要在模式中添加一个新属性。
所以我的问题是如何在不丢失以前记录的情况下添加新属性?可以这样做吗?因为所有这一切,而我只是通过运行 rake db:rollback STEP= ... 并丢失了我生成的所有数据。就是想。
感谢您的帮助来自:BC2
如果您有一个现有表并想在现有表中添加新属性,那么简单的写入独立迁移。
例如:您有一个属性名称为roll_no 的学生表...现在您想在学生表中添加“地址”属性
$ rails generate migration AddAddressToStudents address:string
会产生
class AddAddressToStudents < ActiveRecord::Migration
def change
add_column :students, :address, :string
end
end
然后只需运行“rake db:migrate”
您无需回滚即可更新架构。只需编写一个新的迁移来更新现有的表。
例如,要将字段添加到用户表而不破坏任何内容,请编写如下迁移:
class AddFieldsToUser < ActiveRecord::Migration
def change
change_table :users do |t|
t.date :birthday # add new field
t.remove :first # remove a field
t.rename :gender, :sex # rename a field
end
end
end
有关更多信息,请参见此处:http: //guides.rubyonrails.org/migrations.html#chang-tables