2012-09-13 358 views
9

रेल पर रूबी मॉडल, दृश्य और नियंत्रक नामों के लिए एकवचन और बहुवचन सम्मेलनों का उपयोग करता है। यह बहुत अच्छा है, क्योंकि किसी के पास user नामक मॉडल हो सकता है और users नामक नियंत्रक हो सकता है। यह लगभग हर शब्द, जैसे उपयोगकर्ता (ओं), पेड़ (ओं), पुस्तक (ओं) के साथ काम करता है, इसलिए प्रत्येक शब्द जो बहुवचन बनाने के लिए है।बुद्धिमान बहुवचन हमेशा बुद्धिमान?

हालांकि, उन शब्दों के बारे में क्या है जिन्हें बहुवचन बनाने के लिए केवल एक एस की आवश्यकता नहीं है, जैसे शब्द "वाई" के साथ समाप्त होने वाले शब्द? उदा।, शहर और शहर? क्या रेलों को अंतर पता है या मुझे city और citys लिखने की आवश्यकता होगी, भले ही यह व्याकरणिक रूप से गलत है?

उत्तर

17

रेल बहुत सारे बहुवचन जानता है। यह उदाहरण के लिए "शहर," संभाल कर सकते हैं:

1.9.2p318 :001 > "city".pluralize 
=> "cities" 
1.9.2p318 :002 > "cities".singular 
=> "city" 

हालांकि, अगर आप बहुवचन यह पता नहीं है मिल सकता है, और सीखने नहीं किया जाएगा। के लिए ActiveSupport::Inflector

दस्तावेज़ देखें रेल कोर टीम ने कहा है inflections पुस्तकालय के लिए पैच क्रम तोड़ने लीगेसी एप्लिकेशन जो गुमराह inflections पर भरोसा कर सकते से बचने के लिए स्वीकार नहीं किया जाएगा। यदि आप गलत इन्फ्लिक्शन खोजते हैं और इसे आपके एप्लिकेशन के लिए आवश्यक है, तो आपको इसे स्वयं सुधारने के लिए की आवश्यकता होगी (नीचे समझाया गया है)।

आप इसे स्वयं कैसे ठीक करते हैं? config/initializers/inflections.rb में। उदाहरण के लिए:

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.plural /^(.*)(l)ens$/i, '\1\2enses' 
end 

कैसे रेल नया inflections को पढ़ाने के लिए के बारे में अधिक के लिए ActiveSupport::Inflector के लिये दस्तावेज फिर से देखें।

+0

में सूचीबद्ध चरणों का पालन करके घुसपैठ को जोड़ और समायोजित भी कर सकते हैं जो इसे बहुत अच्छी तरह से समझाता है! धन्यवाद! – weltschmerz

1

बहुत आम लोगों के लिए, यह जानता है कि इसे कैसे अच्छी तरह से संभालना है। आप निम्न कार्य करके आईआरबी में यह अपने आप कोशिश कर सकते हैं:

require 'active_support/all' 
ActiveSupport::Inflector.pluralize("city") 

और तुम वापस मूल्य "शहरों" के साथ एक स्ट्रिंग मिल जाएगा। आप config/initializers/inflections.rb