我对rails非常陌生并且遇到以下问题: 我有一个存储在数据库中的序列化哈希数组。现在我想用新的键值对(从存储的数据计算)扩展哈希数据,例如,在Ruby中像这样:
数据存储数据库:
coordinates = Array.new
c1 = Hash.new('x' => x1, 'y' => y1)
c2 = Hash.new('x' => x2, 'y' => y2)
c3 = Hash.new('x' => x3, 'y' => y3)
coordinates << c1 << c2 << c3
扩展数据:
coordinates.each_with_index do |c, i|
c['z'] = c['x'] + c['y']
数据库中的表示形式如下:
"coordinates_table": [
{
"id": 1,
"coordinates": [
{ "x": 1.0, "y": 0.5 },
{ "x": 0.5, "y": 0.4 }
],
"created_at": "2015-11-22T00:18:38.592Z",
"updated_at": "2015-11-22T00:18:38.592Z"
}
]
这是原始迁移:
class CreateCoordinates < ActiveRecord::Migration
def change
create_table :coordinates do |t|
t.text :coordinates_param
t.timestamps null: false
end
add_index :coordinates, :id
end
end
和坐标类:
class Coordinate < ActiveRecord::Base
serialize :coordinates_param
end
由于我不打算更改输入数据,而只是扩展存储在数据库中的数据,我认为实现这是迁移的最佳方法,但我没有找到任何方法来访问存储在其中的单个Hash对象我在生成的迁移模型中的表。
是否有可能在rails中执行此操作,或者我是否必须提供单独的扩展类来存储新数据?