Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/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 如何在PostgreSQL数据库中存储类似散列的对象?_Ruby On Rails_Ruby On Rails 3_Postgresql_Hstore - Fatal编程技术网

Ruby on rails 如何在PostgreSQL数据库中存储类似散列的对象?

Ruby on rails 如何在PostgreSQL数据库中存储类似散列的对象?,ruby-on-rails,ruby-on-rails-3,postgresql,hstore,Ruby On Rails,Ruby On Rails 3,Postgresql,Hstore,首先,一点信息。我的Rails应用程序有一个名为Neo的模型,它依次具有在观察到的属性、ra和dec 然而,我现在发现我需要在Ruby中存储这些数据集(以类似Python的方式,它将是一个元组列表),这可能是一个列表列表 我怎样才能做到这一点?我不介意使用hstore,但我不介意,因为上面的文档很少。您可以使用更简单的,而不是hstore 或者,您可以为这些集合创建一个模型,然后在Neo上使用has_many,在新模型上使用属于。正如Guilherme Berger所指出的,1:many关系是建

首先,一点信息。我的Rails应用程序有一个名为
Neo
的模型,它依次具有
观察到的属性、
ra
dec

然而,我现在发现我需要在Ruby中存储这些数据集(以类似Python的方式,它将是一个元组列表),这可能是一个列表列表

我怎样才能做到这一点?我不介意使用
hstore
,但我不介意,因为上面的文档很少。

您可以使用更简单的,而不是hstore


或者,您可以为这些集合创建一个模型,然后在Neo上使用
has_many
,在新模型上使用
属于

正如Guilherme Berger所指出的,1:many关系是建模“列表列表”的典型方式。。。或者更准确地说,是一组集合;为了给它排序,您必须在每个子表中定义某种排序键

使用PostgreSQL时,您可以选择的另一个选项是使用多维数组。不幸的是,Pg的数组有点奇怪,因为二维数组更像矩阵(即:固定维度),而不是列表列表。如果您的子列表长度相同,这很好,但是如果它们是可变的且长度无限,那么数组数组就不是一个好的选择


我提到这一点主要是为了完整性,并解释在数据库中序列化特定于语言的对象不是正确的方法。当您第一次必须更新到新的主要运行时版本、更改对象结构或从其他语言或报告引擎访问数据库时,情况会非常糟糕。我真的不建议这样做。

最简单的方法是在一个由四列组成的表格中——三列表示“观测值”、“ra”和“dec”,第四列表示存储集合标识符。您对这些列使用的数据类型是什么?
observed\u at
显然是一个日期
ra
dec
都是浮动。然而,每个
Neo
都有多套。我现在想到了第二个选项。无论如何,谢谢你的帮助。我不太喜欢数据库中特定于语言的序列化对象。当您升级语言运行库或更改对象结构时,它们是一大难题,当您需要使用另一种语言、报告引擎等与数据库对话时,它们会让您非常沮丧。简单的1:m关系是一种更理智的方法。