是否有一些快速的方法来查明模型的任何字段或其嵌套模型(a.k.a.关联)的任何字段是否发生了变化?如何确定模型/嵌套模型中的任何字段是否更改?
回答
要查看某个ActiveRecord的对象发生了变化,您可以拨打:
instance.changed?
要查看是否有特定属性改变时,你可以这样做:
instance.attr_changed?
其中attr是属性你想检查。
要检查是否嵌套模式改变了,你可以这样做:
instance.nested_model.changed?
您可以确定通过调用一个对象是否已经改变,但尚未保存:
my_object.changed?
你可以还要确定个人属性是否已更改(例如,您拥有first_name
属性):
my_object.first_name_changed?
就嵌套模型而言,我认为您必须分别拨打changed?
。
感谢您的回复!但是有什么方法可以检查嵌套模型的属性是否发生了变化,而无需事先知道嵌套模型一个模型有? – Zabba 2011-04-11 00:32:25
我不这么认为,可能有一个wa Ÿ获取所有关联模型的列表,但我不知道它是否在我头顶。正如迈克上面提到的那样,观察者可能是有用的。我可以问你想要达到什么效果吗?可能有更好的解决方案。 – 2011-04-11 00:49:53
谢谢,这就是所谓的完美答案。 – 2016-05-12 07:43:58
我知道这是个老问题,但最近遇到了同样的情况。
即使在保存对象后,也可以使用previous_changes
方法获取嵌套模型的所有更改。
parent_model_object.nested_model_name.previous_changes
这将列出嵌套模型中的所有更改以及旧值和新值。
- 1. 如何确定Django模型中的字段是否已更改
- 2. 更新模型字段和django中的任何其他字段
- 3. 观察控制器中绑定模型中任何字段的更改
- 4. 如何更改Django中代理模型中字段的值
- 5. 如何查看模型保存方法中是否更改了字段
- 6. 如何确定建成邻接表模型表“嵌套层次”
- 7. 确定M2M字段是否具有自定义穿透模型
- 8. Mongoose嵌套模式vs嵌套模型
- 9. Backbone.js中的嵌套模型
- 10. Backbone JS - 更新嵌套子模型更改上的父模型集合
- 11. AutoMapper:嵌套模型
- 12. Containsable嵌套模型
- 13. RailsAdmin +嵌套模型
- 14. igraph'ing嵌套模型
- 15. Rails嵌套模型
- 16. Automapper如何从嵌套模型工作到平面模型?
- 17. 如何分贝:种子模型及其所有嵌套模型?
- 18. 如何判断Backbone.js中的模型是否未更改?
- 19. 如何引用嵌套高级模型?
- 20. 如何创建嵌套模型表格
- 21. Laravel:如何获得嵌套模型
- 22. 模型嵌套在多个模型下?
- 23. 在Rails3中嵌套模型
- 24. Collection_select在嵌套模型中
- 25. Rails模型:如何让Rails模型中的字段只读?
- 26. 友谊模型,如何确定是否友谊模型2个用户
- 27. MVC3嵌套部分页面(和视图模型):表单字段如何绑定?
- 28. 如何更改前端模型字段的外观?
- 29. 将CharGield中的Django模型字段的类型更改为ForeignKey
- 30. 未更新的嵌套模型
感谢您的回复!但是有没有什么办法可以在事先不知道模型有什么嵌套模型的情况下检查是否有嵌套模型的属性发生了变化? – Zabba 2011-04-11 00:33:31
我会检查Rails Observers:http://api.rubyonrails.org/classes/ActiveRecord/Observer.html,它可能会通知父变更的模型。 – 2011-04-11 00:36:40
我不认为nested_model(关联)更改被跟踪https://rails.lighthouseapp.com/projects/8994/tickets/541-dirty-attributes-with-associations – lulalala 2012-06-15 05:36:55