5

我知道通过正常迁移我可以做 rename_table 但在 mongoid 中我完全不确定如何继续。

我已将所有模型/关系/路由/控制器/等全部重命名,但我只需要知道如何移动数据本身。

这是一个嵌入的 embeds_one 文档。

更新:

看起来就像简单地做:

Model.all.each {|m| m.rename :old_embedded_association_name, :new_embedded_association_name }

作品。听起来很理智?

4

3 回答 3

1

对于重命名嵌入式文档,您可以像对待属性一样对待它们,并使用以下内容重命名它们:

ParentModel.all.each {|m| m.rename :old_embedded_association_name, :new_embedded_association_name }

要重命名顶级模型,您需要访问 ruby​​ 驱动程序本身并使用 #rename_collection 方法:

Mongoid.database.rename_collection "old_collection_name", "new_collection_name"

要查看旧集合名称,您可以执行以下操作:

Mongoid.database.collections.map {|c| c.name}

于 2012-09-14T03:32:26.060 回答
1

有几种方法可以重命名集合。我喜欢通过轻便摩托车(https://github.com/mongoid/moped/blob/master/lib/moped/collection.rb#L55)来做。

Mongoid.default_session[:old_name].rename(:new_name)

这对于查找集合名称也很方便。

OldModel.collection.name

于 2014-06-13T16:03:54.787 回答
0

根据您所说的和文档,您似乎应该这样做

Model.rename(:old_name, :new_name)
于 2012-07-03T04:35:34.717 回答