2011-02-04 3 views
32

यह वास्तव में सम्मेलनों का नामकरण करने के बारे में एक प्रश्न है।रुबी/रेल - दो शब्द (नामकरण कन्वेंशन मुद्दे) नामक मॉडल

मैं एक मॉडल PromotedEvents

फ़ाइल promoted_events.rb

मैं के साथ तालिका बनने कहा जाता है कहा जाता है: कुछ भी बनाने

create_table :promoted_events do |t| 

अब मैं आ रही समस्याओं, इसलिए मैं मैं सोच रहा हूं कि दो शब्दों के साथ मॉडल का उपयोग करने में कुछ समस्याएं हैं

कंसोल में im और

a = PromotedEvents.new 

a = Promoted_Event.new 

a = promoted_event.new 

और एक nameerror : uninitialized constant त्रुटि

कोई भी विचार मिलती रहती है?

उत्तर

48

आपकी कक्षा एकवचन होनी चाहिए।

नाम यह फ़ाइल promoted_event.rb

a = PromotedEvent.new 
+0

एक 2 शब्द मॉडल बनाने के लिए टर्मिनल आदेश क्या है जाना चाहते हैं? क्या यह रेल मॉडल मॉडल_नाम 'या कुछ अन्य संयोजन उत्पन्न करता है? क्या दोनों शब्द पूंजीकृत होना चाहिए? मॉडल उत्पन्न करते समय क्या मैं अंडरस्कोर डालता हूं? – tbaums

+2

मुझे लगता है कि आप या तो 'मॉडल नाम' या 'model_name' का उपयोग कर सकते हैं, और सही जादू होगा। लेकिन 'Model_Name' सही नहीं है (ऊंट का मामला या अंडरस्कोर, कभी भी दोनों नहीं)। इसके बारे में सोचें मॉडल मॉडल बनाने की तरह, इसलिए यह एकवचन होगा क्योंकि इसे कक्षा के नाम से मेल खाना पड़ेगा। –

+2

हां, @AlexWayne सही है। [मॉडल जेनरेटर विवरण] (https://github.com/rails/rails/blob/master/railties/lib/rails/generators/rails/model/USAGE) के अनुसार 'CamelCase' या' under_score 'दोनों उपयोग सही हैं । – vlz

19

मॉडल नाम विलक्षण हैं और इसलिए pe = PromotedEvent.new()

तरह ऊंट मामले में PromotedEvent फ़ाइल होना चाहिए promoted_event.rb

नियंत्रकों बहुवचन हैं

PromotedEventsController

स्थिरांक ALL_CAPS

स्थानीय लोगों separated_by_underscores_and_lowercase

तालिका नाम बहुवचन हैं कर रहे हैं 'promoted_events`

+1

मॉडल के भीतर विशेषताओं के बारे में क्या। यानी रेल जी मॉडल PromotedEvent name_of_event: स्ट्रिंग --------------> या यह नामऑफवेन्ट होना चाहिए: स्ट्रिंग? सिंटैक्स क्या है इसका कोई विचार यहां है? – BKSpurgeon

+0

यह सिर्फ नाम होना चाहिए: स्ट्रिंग, लेकिन यदि आपको दो या दो से अधिक शब्दों की आवश्यकता है तो वे लोअरकेस हैं और अंडरस्कोर से अलग हैं, यानी प्रचारक_कोड: पूर्णांक – Thrasher

8

से चुनें * यदि यह मदद करता है, मैं हमेशा इस तरह यह के बारे में सोच:

मॉडल का नाम एकवचन है क्योंकि यह एक एकल, विशिष्ट चीज़ का प्रतिनिधित्व करता है। तो, PromotedEvent एक विशिष्ट प्रचारित कार्यक्रम है जिसमें नाम, दिनांक इत्यादि है।

दूसरी तरफ तालिका का नाम बहुवचन है। ऐसा इसलिए है क्योंकि तालिका इन एकवचन वस्तुओं के संग्रह संग्रह करती है। तो, boosted_events।

रेल में, फाइलनाम ज्यादातर सम्मेलन का विषय हैं क्योंकि रूबी के इस संबंध में बहुत कम नियम हैं, लेकिन आम तौर पर यह class_name.rb है। This page आपको कौन से सम्मेलनों का उपयोग किया जाता है और रूबी बनाम रेल के लिए विशिष्ट क्या है, इसका एक बेहतर अवलोकन प्राप्त करने में आपकी सहायता कर सकता है।

1

यदि आप मेरे जैसे चरम रेल n00b हैं, तो आप अपनी नव निर्मित तालिका के लिए कक्षा परिभाषा बनाना और इसे ऐप/मॉडल में रखना याद रखना चाहेंगे।

ऐसा लगता है कि

class LargeCat < ActiveRecord::Base 
    belongs_to :zoo 
end