首先,一点信息。我的 Rails 应用程序有一个名为的模型,该模型Neo
又具有属性observed_at
,ra
和dec
.
然而,我现在发现我需要存储这些数据的集合(在类似 Python 的方式中,它将是一个元组列表。)在 Ruby 中,这可能是一个列表列表。
我怎样才能做到这一点?我不介意使用hstore
,但我不想使用,因为上面的文档很少。
首先,一点信息。我的 Rails 应用程序有一个名为的模型,该模型Neo
又具有属性observed_at
,ra
和dec
.
然而,我现在发现我需要存储这些数据的集合(在类似 Python 的方式中,它将是一个元组列表。)在 Ruby 中,这可能是一个列表列表。
我怎样才能做到这一点?我不介意使用hstore
,但我不想使用,因为上面的文档很少。
您可以使用更简单的serialize
, 而不是 hstore。
或者,您可以为这些集合创建一个模型,然后has_many
在 Neo 和belongs_to
新模型上使用。
正如 Guilherme Berger 所指出的,1:many 关系是建模“列表列表”的典型方式……或者更准确地说,是一组集合;要给它排序,您必须在每个子表中定义某种排序键。
使用 PostgreSQL 时向您开放的另一个选择是使用多维数组。不幸的是,Pg 的数组有点奇怪,因为二维数组更像是一个矩阵(即:固定维度)而不是列表的列表。如果您的子列表的长度相同,那很好,但如果它们是可变且无限长度的数组,则数组不是一个好的选择。
我提到这一点主要是为了完整性,并解释在数据库中序列化特定于语言的对象不是在这里采用的正确方法。第一次必须更新到新的主要运行时版本、更改对象结构或从不同的语言或报告引擎访问数据库时,这将是可怕的。我真的不推荐它。