Ruby on rails 3 从rails活动记录中获取旧属性值的散列

Ruby on rails 3 从rails活动记录中获取旧属性值的散列,ruby-on-rails-3,activerecord,Ruby On Rails 3,Activerecord,我希望一般地访问模型中已更改的旧属性-也就是说,我希望获得旧属性值的散列。我的代码对所有已更改的属性感兴趣,这些属性在每次运行时可能是不同的集合 我知道您可以使用 model.changed 我知道你能做到 model.attribute_was 如果你知道一个属性的名称,那么就获取它的旧值,但是我找不到一种方法通过编程将两者结合起来,或者以其他方式获取旧值集 我用它来创造关于物体的新闻故事,例如 用户“Bob”将x从a更改为b 您可以使用属性哈希生成此数组: old = model.cha

我希望一般地访问模型中已更改的旧属性-也就是说,我希望获得旧属性值的散列。我的代码对所有已更改的属性感兴趣,这些属性在每次运行时可能是不同的集合

我知道您可以使用

model.changed
我知道你能做到

model.attribute_was
如果你知道一个属性的名称,那么就获取它的旧值,但是我找不到一种方法通过编程将两者结合起来,或者以其他方式获取旧值集

我用它来创造关于物体的新闻故事,例如

用户“Bob”将x从a更改为b


您可以使用属性哈希生成此数组:

old = model.changed.map{|attr| model.send("#{attr}_was".to_sym) }

感谢Matzi,感谢那些想将其转换为更改值的散列的读者:
old=hash[model.changed.zip].injection({}){h,(k,v){h[k]=model.send({k}was.to_sym);h}