大家好我想知道,如果您尝试回滚迁移只是为了更新架构,是否有办法不丢失数据?例如,在运行rake db:migrate之后,并且在插入几轮数据之后,您希望向架构添加新属性。
所以我的问题是如何添加新属性而不会丢失我以前的记录?有可能这样做吗?因为所有这一切,我只是通过运行rake db:rollback STEP = ...并丢失了我生成的所有数据。只是想知道。
感谢您的帮助 从: BC2
答案 0 :(得分:3)
如果您有一个现有的表并希望在现有表中添加新属性,那么只需单独写入迁移即可 例如:你有一个带有属性名称的学生表,roll_no ...现在你想在学生表中添加'地址'属性
$ rails generate migration AddAddressToStudents address:string
将生成
class AddAddressToStudents < ActiveRecord::Migration
def change
add_column :students, :address, :string
end
end
然后只需运行“rake db:migrate”
答案 1 :(得分:2)
您无需回滚即可更新架构。只需编写新的迁移即可更新现有表。
例如,要在不破坏任何内容的情况下向用户表中添加字段,请编写如下的迁移:
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#changing-tables