मैंने सोचा कि स्थिरांक तालिका का उपयोग करके एक सक्रिय क्षेत्र तालिका में स्थिति फ़ील्ड को पॉप्युलेट करना अच्छा होगा। हालांकि, यह जांचने की बात आती है कि क्या इस स्थिति की कोई विशेष स्थिति है, मुझे परेशानी हो रही है।स्टोर और तुलना कैसे करें: ActiveRecord (Rails पर रूबी) में प्रतीकों
अगर मैं निम्नलिखित करते हैं,
e = Mytable.new
e.status = :cancelled
e.save
तो रिकॉर्ड refind और कोशिश करते हैं और प्रतीक को मेरी स्थिति की तुलना करें, जाँच विफल रहता है। मेरे पास यह दिखाने के लिए कंसोल से कुछ आउटपुट है।
irb(main):060:0> e.status.eql?("cancelled")
=> true
irb(main):061:0> e.status.eql?(:cancelled)
=> false
irb(main):062:0> e.status == :cancelled
=> false
irb(main):063:0> e.status == "cancelled"
=> true
irb(main):064:0> e.status == :cancelled.to_s
=> true
क्या रिकॉर्ड में स्थिति रखने का कोई बेहतर तरीका है? यदि कोई मौजूदा फ़ील्ड मान बराबर है तो परीक्षण का कोई तरीका है: बिना किसी स्ट्रिंग के प्रतीक: प्रतीक? मैं सोच रहा हूं कि एक ऑपरेटर हो सकता है जिसे मैं नहीं जानता हूं।
ecoologic आपके लिए एक अच्छा समाधान है, लेकिन मैं शायद इस से दूर स्टीयरिंग और शायद उस में स्थिरांक के साथ एक वर्ग बनाने की सिफारिश करेंगे। कि आप 'e.status = Statuses :: CANCELLED' जैसी चीजें कर सकते हैं और क्या नहीं। और आंतरिक रूप से यह एक स्ट्रिंग हो सकता है और इससे कोई फर्क नहीं पड़ता। आप अभी भी स्थिरांक का उपयोग कर रहे हैं, और यह त्रुटि होगी यदि वह निरंतर मौजूद नहीं है, और यह उस तरह से क्लीनर है। – MrDanA
आप अपने कॉलम के गेटर को ओवरराइड क्यों नहीं करते? – apneadiving
मैंने इन दो टिप्पणियों को पढ़ने से पहले मेरे जवाब में संशोधन किया लेकिन मैं यह कहना चाहूंगा कि मुझे @MrDanA समाधान पसंद है, आपको एक उत्तर लिखना चाहिए और मैं इसे वोट दूंगा! – ecoologic