ruby on rails - ActiveRecord changed? flag doesn't report changes in associated children -


मुझे निम्न स्थिति ActiveRecord के साथ मिल गई है (रेल 2.3.8 में):

  कक्षा आदेश & lt; ActiveRecord :: बेस है has_many: दस्तावेज स्वीकार करता है _nested_attributes_ के लिए: दस्तावेज अंत वर्ग दस्तावेज़ & lt; ActiveRecord :: बेस is_to: आदेश समाप्ति  

अब, एक नियंत्रक में मैं अलग तरह से उपयोगकर्ता निर्देशित करना चाहता हूँ कि क्या या उन्होंने मौजूदा रिकॉर्ड में बदलाव नहीं किए, उदा।

  @ ऑर्डर.डेट्स = पैराम्स [: ऑर्डर] यदि @ ऑर्डर किया गया था। # सेव ऑर्डर # एक जगह फिर से रिडायरेक्ट करें # दूसरे स्थान के अंत में पुनर्निर्देशित करें  

इसके लिए मैं बदलना चाहता हूं? झंडा। यह पता चला है कि @ order.changed? बच्चों से पूछताछ नहीं करता है।

मैंने उस एक्शन प्रॉक्सी विधि के माध्यम से has_many: दस्तावेज़ एसोसिएशन के माध्यम से कार्यान्वित करने की कोशिश की है, जैसे:

  has_many: documents def def changed? कोई? {| Doc | Doc.changed?} एंड एंड  

लेकिन इसका अनपेक्षित साइड-इफेक्ट है जो इससे संबंधित दस्तावेज़ को डिस्क से लोड करता है, जो जाहिरा तौर पर नेस्टेड एट्रिब्यूट्स असाइनमेन्ट में किए गए किसी भी परिवर्तन को मिटा देता है @ Order.attributes = params [: आदेश] यह या तो रेल में एक जानबूझकर डिजाइन निर्णय लगता है, लेकिन फिर इसे कैसे हल करें? या यह एक विशेषता अंतर है?

विचार?

वुल्फ

आप के स्रोत को देख सकते हैं

यह ठीक वही नहीं है जो आप चाहते हैं, लेकिन इसके बारे में सुराग है कि यह कैसे करना है। विशेष रूप से, जो "विशिष्ट सहयोग के आवेश प्राप्त करता है यदि यह जवाब देता है: लोड किया गया है, अन्यथा शून्य"।


Comments