是否有一些快速的方法來查明模型的任何字段或其嵌套模型(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