मुझे संदेह है कि ActiveRecord यह नहीं देख रहा है कि आपके friends
सरणी बदल गई है, ठीक है, अंतर्निहित सरणी संदर्भ तब नहीं बदलता है जब आप:
self.friends.push(target)
यह सामग्री को बदल देगा सरणी के लेकिन सरणी अभी भी वही सरणी होगी। मुझे पता है कि यह समस्या Rails3 में postgres_ext मणि के साथ आती है और इस समस्या को देखते हुए:
<ब्लॉककोट>
स्ट्रिंग विशेषता को गंदा के रूप में चिह्नित नहीं किया जाता है, जब यह <<
. के साथ बदलता है
मैं उम्मीद करता हूँ कि Rails4 उसी तरह व्यवहार करे।
समाधान यह होगा कि सरणी को इन-प्लेस संशोधित करने के बजाय एक नई सरणी बनाई जाए:
update_attributes friends: self.friends + [ target ]
मौजूदा सरणी में तत्व जोड़ते समय एक नई सरणी बनाने के कई तरीके हैं, जो भी आपको पसंद हो उसका उपयोग करें।