Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何获取在保存ActiveRecord实例期间更新的关联模型的列表?_Ruby On Rails_Ruby_Activerecord_Rails Activerecord - Fatal编程技术网

Ruby on rails 如何获取在保存ActiveRecord实例期间更新的关联模型的列表?

Ruby on rails 如何获取在保存ActiveRecord实例期间更新的关联模型的列表?,ruby-on-rails,ruby,activerecord,rails-activerecord,Ruby On Rails,Ruby,Activerecord,Rails Activerecord,我将参数传递给一个模型实例,并用update_属性保存它。它与其他几个模型相关联,我已将其配置为使用accepts\u nested\u attributes\u更新其中一些模型 这是非常好和干净的,因为我只需要更新一个模型,但是我想得到一个关联嵌套模型的列表,这些模型也被更新了,这样我就可以给用户反馈一些已经更改的字段 有没有办法做到这一点,或者我处理问题的方式不对?我找到了解决问题的办法,也许不是最好的办法,但会奏效 对于关联并具有已配置的接受\u嵌套\u属性\u的模型列表,我们执行以下操作

我将参数传递给一个模型实例,并用update_属性保存它。它与其他几个模型相关联,我已将其配置为使用accepts\u nested\u attributes\u更新其中一些模型

这是非常好和干净的,因为我只需要更新一个模型,但是我想得到一个关联嵌套模型的列表,这些模型也被更新了,这样我就可以给用户反馈一些已经更改的字段


有没有办法做到这一点,或者我处理问题的方式不对?

我找到了解决问题的办法,也许不是最好的办法,但会奏效

对于关联并具有已配置的接受\u嵌套\u属性\u的模型列表,我们执行以下操作:

associations = ModelClass.reflect_on_all_autosave_associations()
每个关联对象都有一个名称属性关联名称,可用于访问实例上的关联,然后我们可以检查此关联是否已更改:

associations.each{|assoc|
    model_instance.send(assoc.name).changed?
}
应该注意的是,我们不能在这个解决方案中使用update_属性,因为在我们检查是否有任何更改之前,所有模型都已保存。因此,我们必须分配_属性并在单独的步骤中保存模型:

model_instance.assign_attributes(params[:model_instance])
// check for changes on associations here
model_instance.save()