1

我将模型 Page 上的许多属性序列化为哈希。

由于属性数量众多,我采用了元编程方法,并希望使用 .send() 来遍历属性集合(这样我就不必为每个属性输入更新操作。

我做了这样的事情:

insights.each do |ins|
  self.send("#{ins.name}=",  {(Time.now) => ins.values[1]['value'].to_f})
  self.save
end 

问题是这显然会覆盖整个序列化列,而我希望将其作为元素添加到序列化哈希中。

尝试过这样的事情:

insights.each do |ins|
  self.send("#{ins.name}[#{Time.now}]=", ins.values[1]['value'].to_f)
  self.save
end 

但是得到一个NoMethodError: undefined method page_fan_adds_unique[Mon Aug 13 13:31:58 -0400 2012]=

在控制台中,我可以执行 Page.find(5).page_fan_adds_unique[Time.now]= 12345 并按预期将其作为附加元素保存到哈希中。

那么如何使用 .send() 将附加元素保存到序列化哈希中?还是有其他方法?比如使用 update_attribute 还是其他方法?自己写?任何帮助表示赞赏,即使建议是我不应该为此使用序列化。

4

1 回答 1

0

我会做 :

self.ins.name.send(:[]=, key, value)
于 2012-08-13T18:15:06.327 回答