是这样的,之前的设计不能满足新的要求,一个数据库表中的数据要被拆成两部分通过某些条件。有其他的相互关联表。 这种情况下一般的思路是什么,有事例可以借鉴学习么? 现在完全没有思路 先谢过大家
Rubber Duck Problem Solving http://blog.codinghorror.com/rubber-duck-problem-solving/
找一只橡皮小鸭,向它描述 清楚 你的问题,然后你就会知道怎么做了。
正常应该 ActiveRecord 就足够了。
类似这样
class MoveFooToBar < ActiveRecord::Migration
def up
create_table :bars do |t|
t.blahblah
end
# 这个很重要! 一定要reset
Bar.reset_column_infomation
# 然后该干嘛干嘛
# 用create! 或者 save! 报错就可以回滚
Foo.find_each do |foo|
Bar.create! get_required_attributes_from_foo(foo)
end
# 然后最好先不要删除foos table
# 等以后跑稳定了再加多一个migration就好了
end
def down
drop_table :bars
end
end
@palytoxin 你只需要rails g migration MoveFooToBar
, 然后修改,然后rake db:migrate
就可以了。写其他的 rake 任务也可以,不过就和这个数据库的变化脱节了,得手动执行。
这种情况 mongodb 更容易解决,我们的流程是这样的