我将模型 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 还是其他方法?自己写?任何帮助表示赞赏,即使建议是我不应该为此使用序列化。