ruby - rails:将密钥val对添加到数据库中的序列化哈希

时间:2015-11-22 01:05:53

标签: ruby-on-rails ruby

我对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中执行此操作,或者我是否必须提供单独的扩展类来存储新数据?

0 个答案:

没有答案