【问题标题】:Rename model with mongoid用 mongoid 重命名模型
【发布时间】:2012-07-03 01:16:01
【问题描述】:

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

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

顺便说一句,这是一个嵌入的 embeds_one 文档。

更新:

看起来很简单:

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

有效。听起来很正常吗?

【问题讨论】:

    标签: ruby-on-rails ruby mongoid


    【解决方案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}

    【讨论】:

    • NoMethodError: Mongoid:Module 的未定义方法“数据库”
    【解决方案2】:

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

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

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

    OldModel.collection.name

    【讨论】:

      【解决方案3】:

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

      Model.rename(:old_name, :new_name)
      

      【讨论】:

        猜你喜欢
        • 2011-07-23
        • 2015-11-10
        • 2011-01-28
        • 2018-01-20
        • 1970-01-01
        • 2012-08-18
        • 2018-08-10
        • 2022-07-22
        • 2015-01-26
        相关资源
        最近更新 更多