我对使用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
],
},
...
]
}
所以当我把它写成文字时。一个对象具有一些Main Values和一个崩溃数组。崩溃阵列包含所有崩溃。每次崩溃都再次将一些主要值作为哈希值存储在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
我也看了一下文档。但是关于嵌套的东西,没有太多的:-(。