Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Padrino CouchDB模型中存储json对象_Ruby On Rails_Ruby_Json_Couchdb_Padrino - Fatal编程技术网

Ruby on rails 在Padrino CouchDB模型中存储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的模型后一个字段

我目前正在使用后端开发应用程序。除了一些常规字符串之外,我还需要一个模型来存储json。模型看起来像(在伪代码中):

我无法预测哪些类型的值将存储在
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 
         }
  ]
}