प्रारंभिक रेल परियोजना पर काम करते हुए, और कोड शैली का विश्लेषण करने के लिए Rubocop का उपयोग करके नेस्टेड कक्षा बनाम कॉम्पैक्ट बनाम। इसने मुझे सवाल उठाने का नेतृत्व किया कि रूबी के घोंसले वर्ग रेल के संदर्भ में कैसे काम करते हैं।रूबी
# app/models/app_core/tenant.rb
module AppCore
class Tenant < ActiveRecord::Base
end
end
और एक नियंत्रक: उदाहरण के लिए, मेरी इंजन में, मैं एक मॉडल है
# app/controllers/app_core/tenant/members_controller.rb
module AppCore
class Tenant::MembersController < ApplicationController
end
end
मॉडल के मामले में, मॉड्यूल पथ और वर्ग के नाम के रूप में ही है एक ही है फ़ाइल नाम के रूप में। नियंत्रक मामले में, पथ का दूसरा भाग, "किरायेदार" कक्षा के नाम का हिस्सा है।
Rubocop मुझसे कहता है कि मैं Tenant::MembersController
पंक्ति में "कॉम्पैक्ट शैली के बजाय नेस्टेड वर्ग परिभाषाओं का उपयोग करें" है, इसलिए यदि मैं सही ढंग से समझ ...
module AppCore
class Tenant
class MembersController < ApplicationController
end
end
end
... यह एक फर्क नहीं करना चाहिए ।
अब, मेरा सवाल है कि मेरे पास एक मॉडल के रूप में AppCore :: किरायेदार है, लेकिन फिर AppCore :: किरायेदार को फिर से खोलने लगते हैं और सदस्य नियंत्रक वर्ग को नेस्टेड क्लास के रूप में जोड़ा जाता है। क्या इसका मतलब यह है कि मेरे किरायेदार वर्ग में हमेशा उस घोंसला वाली कक्षा होगी? क्या मुझे अपने मॉडल और नियंत्रक मार्गों को अलग-अलग नाम देने की ज़रूरत है? क्या यह पूरी तरह ठीक है और चिंता करने की कोई बात नहीं है? बिल्कुल सही नहीं है इसका क्या अर्थ है।
मुझे मॉडल मॉडल में यह मॉडल डालने का विचार पसंद है (यह एक मुट्ठी भर है)। अच्छा सुझाव। – typeoneerror
ओटीओएच कॉम्पैक्ट फॉर्म पैरेंट मॉड्यूल/क्लास नहीं बनाता है, जबकि नेस्टेड फॉर्म करता है, जिससे हार्ड-टू-डिस्क त्रुटियां भी हो सकती हैं। – radiospiel