用mongoid重命名模型

时间:2012-07-03 01:16:02

标签: ruby-on-rails ruby mongoid

我知道正常的迁移我可以做rename_table但是在mongoid我不能确定如何继续。

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

这是嵌入式embeds_one文件btw。

更新:

看起来就像在做:

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

作品。听起来很健全吗?

3 个答案:

答案 0 :(得分: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}

答案 1 :(得分:1)

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

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

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

OldModel.collection.name

答案 2 :(得分:0)

基于你所说的和文档,你似乎应该这样做

Model.rename(:old_name, :new_name)