Ruby on rails 在Padrino CouchDB模型中存储json对象
我目前正在使用后端开发应用程序。除了一些常规字符串之外,我还需要一个模型来存储json。模型看起来像(在伪代码中): 我无法预测哪些类型的值将存储在Ruby on rails 在Padrino CouchDB模型中存储json对象,ruby-on-rails,ruby,json,couchdb,padrino,Ruby On Rails,Ruby,Json,Couchdb,Padrino,我目前正在使用后端开发应用程序。除了一些常规字符串之外,我还需要一个模型来存储json。模型看起来像(在伪代码中): 我无法预测哪些类型的值将存储在properties中。目前我使用的是通用模型: padrino g model MyModel name:string, properties:string 在存储属性之前,我将json字符串化;加载时,我从字符串创建json。我觉得我做错了。由于CouchDB已经准备好按原样存储json对象,我想知道是否有办法告诉Padrino的模型后一个字段
properties
中。目前我使用的是通用模型:
padrino g model MyModel name:string, properties:string
在存储属性之前,我将json字符串化;加载时,我从字符串创建json。我觉得我做错了。由于CouchDB已经准备好按原样存储json对象,我想知道是否有办法告诉Padrino的模型后一个字段是json,以便本机存储?比如:
name: 'UniqueName',
properies:
- prop1: val1,
- prop2: val2
我发现我可以创建一个单独的集合,并通过
\u id
从MyModel
引用它,但目前我想将它与它的名称一起存储。可能吗 无需字符串化json,只需解析它并使用json标准库存储为数组即可
original JSON data example:
json_data = [{ prop1: val1, prop2: val2, prop3: val3 }] #store the JSON data from wherever it came
parsed = JSON.parse(json_data.to_json) #store the parsed JSON data into an Array
foo = MyModel.find(1) #find whatever collection you wanna update
foo.properties = parsed
# => [{ prop1: val1, prop2: val2, prop3: val3 }]
foo.save
然后,您的MyModel应该如下所示:
{
"_id" : "your_generated_id",
"_rev" : "your_generated_rev",
"name" : "UniqueName",
"properties" : [
{
prop1: val1,
prop2: val2,
prop3: val3
}
]
}
记住CouchDB是“无模式的”。更多细节 我知道CouchDB是无模式的。唯一的问题是:我如何描述迁移,例如padrino/rails模型?迁移很可能与ORM无关,我希望保持这种独立性。你想做的就是所谓的铸造。请参见模型属性中的部分。另请参阅文档。因此,为了回答您的问题,模型/迁移将是property:properties,[String]
谢谢,它回答了这个问题。
{
"_id" : "your_generated_id",
"_rev" : "your_generated_rev",
"name" : "UniqueName",
"properties" : [
{
prop1: val1,
prop2: val2,
prop3: val3
}
]
}