【问题标题】:MongoID + Rails with Inheritence带有继承的 MongoID + Rails
【发布时间】:2012-09-28 09:11:50
【问题描述】:

正如我在手动继承中读到的,基于 mongo 的模型是可用的。但是如果我继承一个模型,保存时,他会转到以继承根名称命名的文档。

class Base
  include Mongoid::Document
  field :enabled, type: Boolean, default: true
end

class Message < Base
  attr_accessible :name , :description
end

class Event < Base
  field :description, type: String
end

当我对 Message 和 Event 执行创建时,都转到名为 base 的文档

我要做的就是将消息模型存储在消息文档中,类似事件但保持继承

【问题讨论】:

    标签: ruby-on-rails inheritance model mongoid


    【解决方案1】:

    您可以为每个模型指定一个集合

    class Message < Base
      store_in collection: :messages
    
      attr_accessible :name , :description
    end
    
    class Event < Base
      store_in collection: :events
    
      field :description, type: String
    end
    

    【讨论】:

    • 我不能用 store_in 设置它:name 它给了我一个错误......可以接受的方法是定义“store_in collection: name”,但是消息和事件仍然保存到同一个文档但是这次该文档的名称取决于稍后定义的模型...在我的情况下它是一个事件...
    • 啊,是的,这是 mongoid 2.x 的语法。嗯,让我想想你的评论。
    • @SergioTulentsev,我认为 store_in 仅在最新的 mongoid 中可用。在 mongoid 2 中,无法将子文档存储在不同的集合中。所有将存储在 Base 集合下,_type 属性引用子类
    猜你喜欢
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多