2014-06-24 9 views
5

मेरे पास 'my_models' नामक एक टेबल है जिसे 'सेटिंग्स' नामक 'json' कॉलम के साथ कहा जाता है।पोस्टग्रेस्क्ल JSON कॉलम हैशविथ इंडिफेंडरएप

class MyModels < ActiveRecord::Base 
end 

लिए 'सेटिंग' एक 'MyModels' उदाहरण के गुण एक हैश है:

मैं भी निम्नलिखित मॉडल है।

क्या हैश के बजाय हैशविथ इंडिफरफरएप में 'सेटिंग्स' के कच्चे कॉलम मान को कास्ट करने के लिए 'MyModels' को कॉन्फ़िगर करना संभव है?

उत्तर

5

को क्रमानुसार अकेले अभ्यस्त HashWithIndifferentAccess के बाद से यहाँ काम दोनों load और dump तरीकों का जवाब नहीं है, लेकिन आप यह कर सकते हैं:

class THEModel < ActiveRecord::Base 
    def my_hash_attribute 
    read_attribute(:my_hash_attribute).with_indifferent_access 
    end 
end 

भी Custom serialization for fields in Rails

+0

आह एक कस्टम serializer देखें। मैंने हमेशा सोचा कि वे टेक्स्ट कॉलम तक सीमित थे, लेकिन यह बहुत अच्छा काम करता है! – Jacob

+8

हालांकि यह काम करता है, यह शायद ध्यान दिया जाना चाहिए कि यह आपको हैश को सीधे संपादित करने से रोकता है। model.my_hash_attribute = {} model.my_hash_attribute: उदाहरण के लिए [: परीक्षण] = "abc" model.my_hash_attribute # {} की तरह ज्यादातर लोगों में यह करने के लिए उम्मीद करेंगे काम नहीं करता। – joncalhoun

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