如何在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
,否则您将需要设置额外的表来存储您的数组数据。