首页 > 解决方案 > mongoid 嵌套哈希和数组不起作用

问题描述

我对使用 MongoID 的 MongoDB 有疑问。我希望有人可以帮助我。DB 中的对象具有以下结构。(集合名称是崩溃)。抱歉命名不好。我必须改变这一点。

{
  id:String,
  title:String,
  new:String,
  crash:[
          {
            crash_reason:   {
              id:String,
              call:String
            },
            crashes:    [
              {
                id:String,
                app_id:String,
                info:String
              },
              {
                id:String,
                app_id:String,
                info:String
              },
              ... and many more
            ],
          },
          {
            crash_reason:   {
              id:String,
              call:String
            },
            crashes:    [
              {
                id:String,
                app_id:String,
                info:String
              },
              {
                id:String,
                app_id:String,
                info:String
              },
              ... and many more
            ],
          },
          ...
        ]
}

所以当我把它变成文字时。一个对象有一些主要值......和一个崩溃数组。崩溃数组包含所有崩溃。每次崩溃再次将一些主要值作为哈希存储在 crash_reason 中,之后还有另一个数组,其中包含所有崩溃

现在我想使用 MongoID(和 Sinatra),但是当我尝试初始化它时,我似乎做错了。

class Crashes
  include Mongoid::Document
  field :id, type: String
  field :title, type: String
  field :new, type: String
  embeds_many :crash
  accepts_nested_attributes_for :crash
end

class Crash
  include Mongoid::Document
  embeds_one :crashreason
  embeds_many :crashesm
  embedded_in :crashes
  accepts_nested_attributes_for :crashesmulti, :crashreason
end

class Crashreason
  include Mongoid::Document
  field :id, type: String
  field :call, type: String
  embedded_in :crash
end

class Crashesmulti
  include Mongoid::Document
  field :id, type: String
  field :app_id, type: String
  field :info, type: String
  embedded_in :crash
end 

然后我想做一个简单的查询:

get '/mongo' do
  all_c = Crashes.all
  all_c.to_json
  @mongo = all_c
  haml:mongo
end

但我收到以下错误。我不知道我做错了什么。嵌套错了吗?我可以只嵌套不同的集合而必须使用 ARRAY 和 HASH 类型吗?如果是,我该如何参数化它们?

NoMethodError at /mongo
undefined method `relations' for file: embedded_in.rb location: determine_inverses 

我还查看了文档。但是关于嵌套的东西,没有太多:-(。

标签: mongodbmongoid

解决方案


推荐阅读