जैसा कि आप पोस्टग्रेज का उपयोग कर रहे हैं, आप भाग्य में हैं:पोस्टग्रेज में एक देशी जेसन प्रकार। डेटा को एन्कोडेड स्ट्रिंग के कुछ रूपों के रूप में स्टोर करने के लिए सीरियलाइज का उपयोग करने से यह बेहतर तरीका है, क्योंकि पोस्टग्रेज में ऑपरेटरों का एक समृद्ध परिवार होता है जो आपको उस जेसन डेटा के खिलाफ पूछताछ करने की अनुमति देता है।
यदि आप 9.4 पोस्टग्रेज का उपयोग कर रहे हैं तो आप jsonb प्रकार का भी उपयोग कर सकते हैं। यह आम तौर पर बेहतर होता है क्योंकि यह डेटा के संसाधित संस्करण को संग्रहीत करता है (यानी इसे बार-बार डेटा को दोबारा नहीं रखना पड़ता है) और यह इंडेक्स की अनुमति देता है।
रेल इसका समर्थन करता है (देखें यहां ), आपको बस json(b) प्रकार का एक कॉलम जोड़ना होगा। अगर आपके माइग्रेशन में
. हैcreate_table :damages do |t|
t.string :description
t.jsonb :damage_points
end
तब
Damage.create(damage_points: [{left: 40, top: 99}, {left: 100, top: 35}])
जेसन के रूप में क्षति बिंदु डेटा स्टोर के साथ एक पंक्ति बनायेगा। केवल ध्यान देने वाली बात यह है कि यद्यपि आपके इनपुट डेटा में हैश में कुंजियों के रूप में प्रतीक हैं, डेटाबेस से प्राप्त करते समय आपको हमेशा कुंजी के रूप में तार वापस मिलेंगे।