如何在Ruby on Rails中将数组持久化到数据库?

我正在尝试将一个数组数组保存到我在Rails中的SQLite数据库。

现在,我有一个可以容纳这样一个数组的对象,实例看起来没有任何问题。 但是,它显然没有被持久化到数据库中 – 当我在My_Object.array上调用不同于创建数组的视图中的函数时,它出现了nil并且不起作用。

例如:

class My_Object < ActiveRecord::Base attr_accessor :array end 

当我调用My_Object.new(:array => [ [1, 2, 3], [4, 5, 6] ]) ,一切似乎都能正常工作,但我无法在其他地方访问:array属性,它结果是零。

有任何想法吗?

首先在表中创建一个名为array的文本列。 然后使用serialize

 class My_Object < ActiveRecord::Base serialize :array end 

这将使用YAML自动序列化您的数组,并在您将其从数据库中拉回时自动解压缩它。

你应该重新考虑你的设计。 您将无法对数据库中的序列化数据执行任何操作,特别是您将无法在查询中使用它。 YAML将只是一个不透明的blob进入数据库并返回,数据库将无法使用它做任何其他事情。 如果您确定数据库永远不需要查看array内部,那么继续使用serialize ,否则您将需要设置额外的表来存储您的数组数据。