2014-07-04 36 views
6

我应该在更改模型时创建AR迁移吗?我使用的是Mongoid和MongoDB,所以我没有看到任何好处。我能想到的唯一好处是重命名一个字段 - 但我也可以用小脚本来完成。这甚至会工作吗?我的直觉告诉我,我不需要迁移,但我想听到有更多经验的人。在Rails/Mongoid/MongoDB中使用迁移是否有意义?

最佳做法是什么?我应该使用MongoDB迁移吗?

+2

你仍然需要迁移,就像我在PHP中学习Yii一样,许多人仍然有使用MongoDB迁移策略的场景,必须将它添加到我的MongoDB Yii ext – Sammaye

+0

@Sammaye那些场景是什么? – xx77aBs

+2

一个场景是标准化,在应用程序中做这些事情的问题是,你得到越野车和脏代码。如果你在数据库中这样做,它可以解决这个问题。另一个是当你决定改变Yii的功能。在Yii论坛上还有另一个让我改变主意的姿势,但我现在不能完全记住它 – Sammaye

回答

8

由于MongoDB没有(如2.6)提供任何服务器端模式实施,所以不严格要求数据迁移脚本。这对开发速度特别有用。

但是,如果您想练习良好的“数据卫生”并确保不同部署之间的一致性,那么为您的生产数据创建迁移仍然有意义。

例如:

  • 去除未使用的字段
  • 添加新的所需字段
  • 设置默认值
  • 重命名字段
  • 加载所需的数据/夹具
  • 确保所需索引

您当然可以选择将以上任何一种作为一次性脚本或处理应用程序代码中的异常情况。例如,当文档从数据库加载进行编辑时,您可以懒惰地添加缺少的字段或默认值。

对于Mongoid尤其是你可能想尝试mongoid_rails_migrations宝石。

1

Mongo DB文档无模式,因此不需要迁移。你可以只定义字段中您mongoid车型,如:

field :name, type: String

检查mongoid documentation支持的领域。

相关问题