2008-09-24 15 views
7

मेरे रेल ऐप पर मेरे पास आइटमों की एक सूची है (एक कार्य सूची की तरह) और प्रत्येक आइटम के लिए पैरामीटर सेट करने के लिए कुछ चेक बॉक्स हैं।MySQL पर रेल चेक बॉक्स को शून्य या शून्य

जब मैं फॉर्म जमा करता हूं, चेक बॉक्स को शून्य के रूप में संग्रहीत किया जाता है और डीबी पर अनचेक के रूप में अनचेक किया जाता है।

सवाल यह है: क्या इसे कॉन्फ़िगर करने का कोई तरीका है? डेटा को अधिक पारंपरिक 0 या 1 पर संग्रहीत करने के लिए, क्योंकि मुझे लगता है कि शून्य के रूप में शून्य और सत्य के रूप में संग्रहीत करना थोड़ा उलझन में है, विशेष रूप से यदि कोई अन्य ऐप (जैसे सी ऐप) को डेटा को पढ़ने की आवश्यकता है।

+0

रेल का कौन सा संस्करण आप चल रहे हैं? –

उत्तर

3

मान लीजिए कि आप जिस विशेषता के साथ काम कर रहे हैं वह club_member है जैसा कि "क्या आप क्लब हैं?"।

ध्यान दें कि रूबी/रेल में, जिस तरह से यह अब काम कर रहा है, if model.club_member झूठी वापसी करेगा यदि यह चेक नहीं किया गया है (मान शून्य है या रूबी, शून्य में) और यदि यह चेक किया गया है तो सत्य (मान 0 है)।

पूरी तरह से, मैं दृढ़ता से अनुशंसा करता हूं कि सीधे आपके डेटा पर अन्य एप्लिकेशन (जैसे सी ऐप) देने की बजाय, आपको अपने आवेदन से डेटा को बाहरी संस्थाओं में बेनकाब करने के लिए रूबी/रेल में एक एपीआई बनाना चाहिए। इस तरह, आप बेहतर ढंग से अपने आवेदन के आंतरिक encapsulate करेंगे और आपको इस तरह की चीजों के बारे में चिंता करने की ज़रूरत नहीं होगी।

उपयोग::


हालांकि, सभी ही कहा जा रहा है, यहाँ अपने जवाब है

value="1" 

... अपने चेकबॉक्स HTML टैग में विशेषता है, और का डिफ़ॉल्ट मान सेट बूलियन विशेषता (आपके माइग्रेशन में) 0

+0

धन्यवाद! इसने समस्या को हल किया (मान = 1 सहित) और माइग्रेशन पर डिफ़ॉल्ट मान को 0 – bcsanches

+0

पर सेट करना मुझे एक ही समस्या का सामना करना पड़ रहा है लेकिन मैं ExtJS फॉर्म का उपयोग कर रहा हूं। मैंने डिफ़ॉल्ट मान को 0 (माइग्रेशन फ़ाइल में) पर सेट करने का प्रयास किया और मूल्य: 1 चेकबॉक्स घटक में है लेकिन समस्या अभी भी बनी हुई है। Extjs के साथ कोई विचार? – Rashmi

+0

@ रश्मी मैं एक्स्टजेस से परिचित नहीं हूं। मैं आपको दो चेकबॉक्स सेट अप करने की सलाह दूंगा, एक को चिह्नित करें और अन्य अनमार्कित छोड़ दें, और फॉर्म सबमिट करें। अपने नियंत्रक में, अपनी क्रिया की शुरुआत में 'params.inspect' बढ़ाएं ताकि आप बैकट्रैक में देख सकें कि प्रत्येक स्थिति के लिए फ़ॉर्म से ऐप में क्या आ रहा है। – Yardboy

2

इस के लिए संभावित कारणों की एक संख्या हैं:

  • सुनिश्चित करें कि डेटाबेस में स्तंभ
  • प्लेस बूलियन मूल्यों
  • उपयोग पर एक डिफ़ॉल्ट प्रवास में "बूलियन" प्रकार के है फ़ॉर्म पर "check_box", "check_box_tag" नहीं
  • रेल के कुछ संस्करणों में जेनरेट किए गए मचानों पर यह व्यवहार था, मुझे लगता है कि यह डिफ़ॉल्ट तय करना है, लेकिन मुझे काफी याद नहीं है।
+0

डीबी पर कॉलम सत्य पर सेट है और मैंने इसके डिफ़ॉल्ट मान को गलत पर मजबूर कर दिया है। शून्य खत्म हो गया है, लेकिन अब सभी मान शून्य हैं! मैं गतिशील डोम का उपयोग कर फ्लाई पर चेक बॉक्स बना रहा हूं, शायद यह मुद्दा है। – bcsanches

+0

इसका उपयोग गतिशील रूप से अभी भी ठीक हो सकता है। मैं इसे पहले मानक रेल सहायक के माध्यम से करने की सलाह दूंगा, फिर अपने डोम मैनिपुलेशन में जेनरेट किए गए HTML की नकल करें। –

1

इसके बारे में:

value.to_i.zero?

>> a=nil 
=> nil 
>> a.to_i.zero? 
=> true 
>> a=0 
=> 0 
>> a.to_i.zero? 
=> true 
>> a=3 
=> 3 
>> a.to_i.zero? 
=> false 
0

रेल प्रलेखन से:

एक वस्तु खाली है अगर यह, झूठी खाली है, या एक खाली स्थान के स्ट्रिंग है। उदाहरण के लिए, "", "", शून्य, [], और {} खाली हैं।

यह आसान बनाता है: अगर! Address.nil? & &! Address.empty?

... से: अगर! Address.blank?

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