我正在为应用程序进行各种审计跟踪,以便用户可以查看整个系统中正在更改的内容。
我有一个来自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}。”
但是我不确定如何在动态的基础上解析那个哈希来做到这一点。
答案 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
,当时不确定活动记录脏是否会让你通过关联。如果你测试它(或者如果有其他人知道的话)让我知道