我看过很多关于 ActiveRecord 迁移以及是否应该使用它们来更改应用程序中的数据的讨论,有些人说是,有些人说不。我的问题是,如果您不使用迁移来执行此操作,那么您使用什么?只是你写的另一个脚本?
我正在寻求有关替代方法的建议,以及为什么它们可能比仅仅使用迁移更好。
如果您使用提供的,就会出现一个问题
rake db:reset
and
rake db:schema:load
任务,其中使用schema.rb
作为设置数据库的基础。所以没有数据被加载并且你被卡住了。
In 使用 Rails 进行敏捷 Web 开发,第三版 http://www.pragprog.com/titles/rails3/agile-web-development-with-rails-third-edition,你应该得到它(如果 Ruby 书是“Pickaxe”书,这应该是“Hammock”书,顺便说一句?)如果你还没有这样做,DHH 说:
...迁移并不是真正的目的
携带种子数据。它们太暂时了
本质上是可靠地做到这一点。
移民是为了带你离开
模式的一个版本到下一个版本,
不创建新的模式
从头开始——我们有 db/schema.rb 文件
为了那个原因。
所以,一旦你真正
开始真正的应用程序,
人们不会早早地跑你
当他们设置时迁移
应用。他们将从
无论存储在什么版本
db/schema.rb 并忽略所有这些
以前的迁移。这意味着
迁移创建的任何数据
永远不会将其放入数据库,所以
你不能依赖它。
有许多
获得更多的替代方法
永久种子数据。最简单的是
可能只是为了创建一个新文件
db/seed.rb,其中包含那些
Product.create 调用将执行以下操作
设置。然后可以调用该文件
rake db:schema:load 创建后
初始架构。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)