Rails - ActiveRecord Dirty - 从更改哈希中获取关联对象

时间:2014-03-24 12:00:38

标签: ruby-on-rails activerecord

我正在为应用程序进行各种审计跟踪,以便用户可以查看整个系统中正在更改的内容。

我有一个来自ActiveRecord Dirty的更改哈希,如下所示:

{"ingredient_type_id"=>[nil, 199575006], "name"=>[nil, "asdfg"], "amount"=>[nil, 3.0], "unit"=>[nil, "x"], "notes"=>[nil, "asdf"]}

这很好用,我可以解析输出所需的内容,并使用info创建数据库记录。

我只有一个问题 - 如何从中获取相关对象?在这种情况下,ingredient_type?我实际上想要输出如下内容:

“成分类型已更改为#{IngredientType.find(199575006).name}。”

但是我不确定如何在动态的基础上解析那个哈希来做到这一点。

1 个答案:

答案 0 :(得分:1)

你提出的方式几乎就是我想的,但你不需要解析哈希的变化,Dirty给你的不仅仅是那个

if ingredient_type_id_changed?
  unless ingredient_type_id.blank?
    ingredient_name = IngredientType.find(ingredient_type_id).name        
  else
    ingredient_name = 'blank'        
  end
end

你甚至可以做ingredient_type.name,当时不确定活动记录脏是否会让你通过关联。如果你测试它(或者如果有其他人知道的话)让我知道