[Ruby-on-rails] रेल: निर्भर =>: वीएस को नष्ट करें: निर्भर =>: delete_all


Answers

एक रेल के मॉडल एसोसिएशन पर आप निर्दिष्ट कर सकते हैं :dependent विकल्प, जो निम्नलिखित तीन रूपों में से एक ले सकता है:

  • :destroy/:destroy_all संबंधित वस्तुओं को अपनी destroy विधि destroy बुलाकर इस वस्तु के साथ नष्ट कर दिया जाता है
  • :delete/:delete_all सभी संबंधित वस्तुओं को तुरंत कॉल किए बिना नष्ट कर दिया जाता है :destroy विधियों :destroy
  • :nullify सभी संबंधित ऑब्जेक्ट्स को :nullify 'विदेशी कुंजी अपने save कॉलबैक को कॉल किए बिना NULL सेट की जाती हैं
Question

रेल गाइड में यह इस तरह वर्णित है:

ऑब्जेक्ट्स को नष्ट कर दिया जाएगा यदि वे इसके साथ जुड़े हैं :dependent => :destroy , और हटाए गए हैं यदि वे इसके साथ जुड़े हैं :dependent => :delete_all

ठीक है, शांत। लेकिन नष्ट होने और हटाए जाने के बीच क्या अंतर है? मैंने दोनों की कोशिश की और ऐसा लगता है कि यह वही काम करता है।




असल में मुख्य अंतर यह है कि जब किसी भी कॉलबैक का उपयोग नहीं किया जाएगा तब :delete_all का उपयोग किया गया था। लेकिन जब उपयोग किया जाता है :destroy कॉलबैक स्टैक :destroy करें ( :after_destroy :after_commit ...) निकाल दिया जाएगा।

नतीजतन, यदि आप touch: मॉडलों में घोषणाओं को हटाया जा रहा है तो dependent: :delete_all का उपयोग dependent: :delete_all बेहतर है dependent: :delete_all बल्कि 'निर्भर:: नष्ट करें'।