Ruby on rails Rails迁移:代码不断演变,迁移不再有效:怎么办?
所以我进行了这个迁移,它处理我的模型,然后在列中添加一个:deleted_Ruby on rails Rails迁移:代码不断演变,迁移不再有效:怎么办?,ruby-on-rails,git,database-migration,Ruby On Rails,Git,Database Migration,所以我进行了这个迁移,它处理我的模型,然后在列中添加一个:deleted_ class HandleMyModel < ActiveRecord::Migration def up Model.all.each do |m| m.process_data # whatever it is end add_column :models, :deleted_at, :datetime end def down Model.all.eac
class HandleMyModel < ActiveRecord::Migration
def up
Model.all.each do |m|
m.process_data # whatever it is
end
add_column :models, :deleted_at, :datetime
end
def down
Model.all.each do |m|
m.unprocess_data # whatever it is
end
remove_column :models
end
end
我将其全部提交,并推送到其他环境开发人员。但在那里,当我运行迁移时,我在模型中得到一个错误undefined column deleted\u at,这与模型一样有意义。包含默认\u范围但已删除\u at的所有查询尚不存在
在这种情况下我该怎么办
我是否应该注释默认的\u范围,直到每个环境都迁移到脏环境?
在这种情况下,我是否应该创建单独的迁移数据迁移+数据库结构迁移,并在迁移失败时重新排序?
我可以告诉迁移使用特定的代码提交来运行自己吗?
我完蛋了吗?
感谢您的支持在处理数据之前,您需要将已删除的_at列添加到模型中。但您还需要在模型定义到达Model.all之前重置模型定义,以便找到新的deleted_at列
例如:
class HandleMyModel < ActiveRecord::Migration
def up
add_column :models, :deleted_at, :datetime
Model.reset_column_information # <-- this line will allow the new :deleted_at column to be see in Model.all
Model.all.each do |m|
m.process_data # whatever it is
end
end
def down
Model.all.each do |m|
m.unprocess_data # whatever it is
end
remove_column :models, :deleted_at
end
end
class HandleMyModel < ActiveRecord::Migration
def up
add_column :models, :deleted_at, :datetime
Model.reset_column_information # <-- this line will allow the new :deleted_at column to be see in Model.all
Model.all.each do |m|
m.process_data # whatever it is
end
end
def down
Model.all.each do |m|
m.unprocess_data # whatever it is
end
remove_column :models, :deleted_at
end
end