मेरे पास एक मॉडल है जिसमें कई प्रकार हैं Imany, और has_many: मॉडल संबंधों के माध्यम से। उदाहरण के लिए, मेरे उपयोगकर्ता कक्षा में मेरे पास है:रेल में परिवर्तनों का पता लगाने के लिए है_many: रिश्ते के माध्यम से
has_many: भाषा, के माध्यम से: profile_languages
मैं चाहते हैं क्या जब इन जोड़े या निकाले जाने 'User.changes' समारोह का उपयोग कर पता लगाने के लिए सक्षम होने के लिए है , जो उपयोगकर्ता के साथ बुलाए जाने वाले गुणों की एक सरणी देता है। language_ids = function।
क्या किसी और ने ऐसा करने का प्रयास किया है, या इसके साथ अनुभव है? ActiveModel पर
जानकारी में परिवर्तन समारोह: http://api.rubyonrails.org/classes/ActiveModel/Dirty.html
संपादित करें: के रूप में अनुरोध किया है, यहाँ मैं क्या कर रहा हूँ है।
उपयोगकर्ता के गुणों को असाइन किए जाने के बाद और इसे सहेजने से पहले, मैं बाहरी लॉग में किए गए सभी परिवर्तनों को लॉग इन करने के लिए .changes से लौटाए गए सभी मानों को देख रहा हूं।
तो अगर मैं u.name = "नया नाम" कहते हैं
तो u.changes रिटर्न {नाम: [ 'पुराना नाम', 'नया नाम']}
हालांकि, जब मैं एक पारित उपयोगकर्ता भाषा आईडी का एक समूह है, जैसे
u.language_ids = [4,5]
तो फिर वहाँ बनाया ProfileLanguage मॉडलों में से एक नंबर रहे हैं, और u.changes हैश खाली छोड़ दिया है।
मैं प्रोफाइल भाषा मॉडल में कुछ कॉलबैक बनाने का प्रयास कर रहा हूं जो मैन्युअल रूप से किसी प्रकार का हैश बना देगा, लेकिन मुझे आश्चर्य है कि यह वास्तव में सबसे अच्छा समाधान है या नहीं।
हाय रॉन, क्या आप कृपया अपने प्रश्न के बारे में थोड़ा और विशिष्ट हो सकते हैं? शायद हमें दिखाएं कि आपने अभी तक क्या सेटअप किया है, इसलिए हमारे पास कुछ बंद होना है। – Noz
क्या आपने कॉलबैक या पर्यवेक्षकों को देखा है? – Ari
एक संपादन जोड़ा गया। उम्मीद है कि यह –