मॉडल और कुछ मार्गों और नियंत्रकों के साथ a brand new Rails 5.1.4 app है।रेल का ऑटोलोडिंग/निरंतर रिज़ॉल्यूशन भूत मॉड्यूल
class AdminArea::WelcomeController < ApplicationController
def index
@user = User.new(name: 'Sergio')
end
end
अब तक तो अच्छा:
एक namespaced नियंत्रक एक शीर्ष स्तर के मॉडल संदर्भित कर रहा है। आप मास्टर को देख सकते हैं, http://localhost:3000/admin_area/welcome
पर नेविगेट कर सकते हैं और इसे देख सकते हैं।
लेकिन अगर हम were to add an empty directory app/presenters/admin_area/user/
*, तो चीजें अजीब हो जाती हैं। उस नियंत्रक में अचानक, User
मेरा मॉडल नहीं है, लेकिन एक गैर-मौजूदा मॉड्यूल है!
NoMethodError (undefined method `new' for AdminArea::User:Module):
app/controllers/admin_area/welcome_controller.rb:3:in `index'
स्वाभाविक रूप से, इस मॉड्यूल किसी भी [गैर निर्मित] विधियां नहीं हैं और डिस्क पर एक स्रोत फ़ाइल को पिन नहीं किया जा सकता है।
प्रश्न: क्यों एक खाली निर्देशिका रहस्यमय तरीके से हवा से बाहर एक मॉड्यूल जादू करने के बजाय सही ढंग से अपने मॉडल को नाम User
को हल करने का कारण बनता है रेल जोड़ने?
* वास्तव में, यदि आप उस शाखा की जाँच के रूप में है, तो आप एक अलग त्रुटि प्राप्त होगी।
NameError (अप्रारंभीकृत निरंतर AdminArea :: WelcomeController :: उपयोगकर्ता)
क्योंकि Git मुझे एक खाली निर्देशिका के लिए प्रतिबद्ध नहीं जाने देंगे, तो मैं वहाँ में एक .keep
फ़ाइल जोड़ा। लेकिन जैसे ही आप उस फ़ाइल को हटाते हैं, आपको ऊपर वर्णित व्यवहार मिलता है।
संभावित डुप्लिकेट (https://stackoverflow.com/questions/18934115/rails-4-organize-rails-models-in-sub -पाथ-बिना-नाम-मॉडल-मॉडल) – jon1467
@ जोन 1467: नहीं, उसमें से एक डुप्लिकेट नहीं। जब तक मैं कुछ याद नहीं कर रहा हूँ। –
आह क्षमा करें, मुझे लगता है कि मैंने आपके प्रश्न को गलत तरीके से पढ़ा है कि निर्देशिका में 'उपयोगकर्ता' निर्देशिका में अपना उपयोगकर्ता मॉडल कैसे रखा जाए। मेरी गलती। – jon1467