【发布时间】:2014-05-22 08:25:48
【问题描述】:
所以我有这个迁移,它处理我的Model,然后向它添加一个:deleted_at 列。
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
本地我加rake db:migrate,一切顺利。
然后,我在Model 中添加了一个默认范围:
def Model < ActiveRecord::Base
default_scope where(:deleted_at => nil)
end
我全部提交,然后推送到其他环境(开发)。但是在那里,当我运行迁移时,我收到一个错误 undefined column deleted_at in Model,这是有道理的,因为包含 default_scope 的 Model.all 查询但 deleted_at 尚不存在。
遇到这种情况我该怎么办?
- 我应该评论
default_scope,直到每个环境都迁移(脏)? - 我是否应该在这种情况下创建单独的迁移(数据迁移 + 数据库结构迁移)并在失败时重新排序(仍然有点脏)?
- 我可以告诉迁移使用代码的某个提交来运行自己吗?
- 我搞砸了吗?
感谢支持
【问题讨论】:
标签: ruby-on-rails git database-migration