2017-11-09 11 views
5

डेटाबेस में, मेरे पास मॉडल में serialize फ़ंक्शन के साथ एक सरणी फ़ील्ड is_deleted है। मैं डेटाबेस फ़ील्ड में सरणी मान जोड़ना चाहता हूं। पोस्टग्रेस्क्ल में इस्तेमाल किया गया फ़ंक्शन यहां दिया गया है।'append' फ़ंक्शन के साथ सरणी फ़ील्ड मान को अपडेट करने के लिए कैसे करें

Message.update_all(['is_deleted = array_append(is_deleted, ?)', 2]) 

यह SQL डेटाबेस के साथ कैसे किया जा सकता है?

उत्तर

1

आप मॉडल

Class Message < ActiveRecord::Base 
    serialize :is_deleted, Array 
end 

एक तरफ ध्यान दें के लिए में serialize स्तंभ की जरूरत है यदि आप एक कॉलम की दुकान सरणी के लिए प्रयोग की जाने वाली तो इसकी column_type स्ट्रिंग या text

Message.all.each { |m| m.update_attribute(:is_deleted, m.is_deleted.push(2)) } 
+0

मैं पहले से ही है होना चाहिए चाहते हैं मॉडल में किया गया। मैं जो करना चाहता हूं वह सभी प्रश्नों को एकल क्वेरी के साथ अपडेट करना चाहता है और मौजूदा मानों के साथ फ़ील्ड में नए सरणी मान जोड़ना चाहता हूं। पोस्टग्रेस उदाहरण की तरह मैंने प्रश्न में प्रदान किया है। –

+1

मैंने जवाब बदल दिया है, कृपया एक नज़र डालें। – Gabbar

+0

यह एक अच्छा समाधान है। लेकिन क्या यह उपरोक्त पोस्टग्रेस एसक्यूएल क्वेरी.बीसीयूज़ जैसे एक प्रश्न के साथ ऐसा करना संभव हो सकता है मेरे पास 1000 से अधिक रिकॉर्ड हैं और यह 1000 प्रश्नों के लिए संभव नहीं है। –

संबंधित मुद्दे