【发布时间】:2010-08-15 15:16:21
【问题描述】:
在 Rails 应用程序开发的早期阶段,我更喜欢直接修改迁移文件以将新列(字段)添加到我的表(模型)中,而不是堆积迁移来更改字段和/或进行细微更改.
这在 Rails 中可行吗?
【问题讨论】:
在 Rails 应用程序开发的早期阶段,我更喜欢直接修改迁移文件以将新列(字段)添加到我的表(模型)中,而不是堆积迁移来更改字段和/或进行细微更改.
这在 Rails 中可行吗?
【问题讨论】:
我运行以下命令来解决这个问题。将其保存在脚本中,您就可以开始了!当然,这假设丢失数据是好的。在任何情况下,加载固定装置都很容易添加到这个脚本中。
#!/bin/sh
rake db:drop
rake db:create
rake db:migrate --trace
PS:给我这个想法的朋友称这个脚本为 rake_dance :)
【讨论】:
大概你正在做的事实表明它是可能的!
【讨论】:
从 Vijay Dev 的解决方案驱动的最干净的解决方案是创建一个 rake 任务:
namespace :db do
desc "Drops, recreates and seeds the database."
task :reload => [:drop, :create, :migrate, :seed] do
Rake::Task['db:drop'].invoke
Rake::Task['db:create'].invoke
Rake::Task['db:migrate'].invoke
Rake::Task['db:seed'].invoke
end
end
【讨论】:
db:reset 执行 Omar 的建议。
【讨论】:
我建议在采用这种方法时使用固定装置(因为它允许在删除数据库以重新创建后快速为应用程序重新创建示例数据)。另一个选项是http://datamapper.org/(不需要迁移)。
【讨论】:
发现我们可以在一个命令中组合所有内容:
rake db:drop db:create db:migrate db:seed
使用 shell 别名可以轻松重做所有旧迁移。
【讨论】: