我需要将我的Rails应用程序连接到MongoDB,经过一些研究我发现了一个gem(mongoid)。我的疑问是,如何创建模型? MongoDB上的集合看起来像下面的示例:
{
"_id": {
"$oid": "56fbf7e577550f39a5aea04a"
},
"id_test": "225|1",
"array_ex1": [],
"array_ex2": [
"obj_ex1": {
"field_obj_1": "text1",
"field_obj_2": "text2",
"field_obj_3": "text3",
}
],
"obj_ex2": {
"field1: "textex1",
"field2: "textex2",
"field3: "textex3",
},
"flg_test": true
}
这是一样的..
rails generate model model_name
此外,您可以指定orm:
rails g active_record:model model_name
rails g mongoid:model model_name
模型文件看起来像这样:
class SomeModel
include Mongoid::Document
include Mongoid::Timestamps
field :id_test, type: String
field :array_ex1, type: Array
field :array_ex2, type: Array
field :obj_ex2
field :flg_test, type: Boolean
end
- >创建模型
rails generate model modelname
- >如果每条记录的数据字段不同(动态),则需要在模型中添加以下行
include Mongoid::Attributes::Dynamic
- >创建记录
modelname.create({:field1 "valie1", :field2 "value2"})
modelname.create({:field1 "valie1"})
您需要在app/models
文件夹中创建模型。对于您的示例,它看起来像是:
app/models/singular_collection_name.rb
class SingularCollectionName
include Mongoid::Document
field :id_test, type: String
field :array_ex1, type: Array
field :array_ex2, type: Array
field :obj_ex2, type: Hash
field :flg_test, type: Boolean
end
其中SingularCollectionName是没有复数的集合名称。
你可以阅读更多here。