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

Ruby on rails Rails-ActiveRecord Dirty-从更改哈希中获取关联对象,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我正在为一个应用程序进行审计跟踪,这样用户就可以看到整个系统中发生了什么变化 我对ActiveRecord Dirty进行了一系列更改,如下所示: {"ingredient_type_id"=>[nil, 199575006], "name"=>[nil, "asdfg"], "amount"=>[nil, 3.0], "unit"=>[nil, "x"], "notes"=>[nil, "asdf"]} 这非常有效,我可以解析输出所需的内容,并使用这些信息创建数

我正在为一个应用程序进行审计跟踪,这样用户就可以看到整个系统中发生了什么变化

我对ActiveRecord Dirty进行了一系列更改,如下所示:

{"ingredient_type_id"=>[nil, 199575006], "name"=>[nil, "asdfg"], "amount"=>[nil, 3.0], "unit"=>[nil, "x"], "notes"=>[nil, "asdf"]}
这非常有效,我可以解析输出所需的内容,并使用这些信息创建数据库记录

我只有一个问题-如何从中获取关联对象?在这种情况下,成分类型是什么?我实际上想要输出如下内容:

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


但我不确定如何在动态的基础上解析该散列来做到这一点。

与您建议的我的想法差不多,但您不需要解析散列来进行更改,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
您甚至可以执行
成分类型.name
,但此时不确定active record dirty是否允许您通过关联。如果你测试过(或者其他人知道),请告诉我