যেহেতু রেলগুলি এমভিসির শর্তে কাঠামো সরবরাহ করে, কেবলমাত্র আপনার জন্য সরবরাহ করা মডেল, দৃশ্য এবং নিয়ামক পাত্রে ব্যবহার করে শেষ হওয়া স্বাভাবিক । নবীনদের (এবং এমনকি কিছু মধ্যবর্তী প্রোগ্রামারগণের) জন্য আদর্শ আইডিয়ামটি হ'ল অ্যাপ্লিকেশনটির সমস্ত যুক্তি মডেল (ডাটাবেস ক্লাস), নিয়ামক বা দৃশ্যে ক্র্যাম করা।
এক পর্যায়ে, কেউ "ফ্যাট-মডেল, চর্মসার-নিয়ন্ত্রক" দৃষ্টান্তটি দেখায় এবং মধ্যবর্তী বিকাশকারীরা তাড়াতাড়ি করে তাদের নিয়ন্ত্রকদের কাছ থেকে সমস্ত কিছু আবশ্যক করে মডেলটিতে ফেলে দেয়, যা অ্যাপ্লিকেশন যুক্তির জন্য নতুন ট্র্যাশ ক্যান হতে শুরু করে।
চর্মসার নিয়ন্ত্রকরা আসলে একটি ভাল ধারণা, তবে তাত্পর্যপূর্ণ - সবকিছুকে মডেলটিতে ফেলে দেওয়া সত্যই সেরা পরিকল্পনা নয়।
রুবিতে জিনিসগুলি আরও মডুলার করার জন্য আপনার কাছে বেশ কয়েকটি ভাল বিকল্প রয়েছে। একটি মোটামুটি জনপ্রিয় উত্তর হ'ল মডিউলগুলি (সাধারণত স্ট্যাশড lib
) ব্যবহার করা হয় যা পদ্ধতির গোষ্ঠী ধারণ করে এবং তারপরে মডিউলগুলি উপযুক্ত শ্রেণিতে অন্তর্ভুক্ত করে। এটি এমন ক্ষেত্রে সহায়তা করে যেখানে আপনার একাধিক ক্লাসে পুনরায় ব্যবহার করতে চান এমন কার্যকারিতা বিভাগ রয়েছে তবে যেখানে কার্যকারিতা এখনও ক্লাসগুলির সাথে সংজ্ঞায়িতভাবে সংযুক্ত।
মনে রাখবেন, আপনি যখন কোনও ক্লাসে মডিউল অন্তর্ভুক্ত করবেন তখন পদ্ধতিগুলি ক্লাসের উদাহরণ পদ্ধতিতে পরিণত হয়, সুতরাং আপনি এখনও এক টন পদ্ধতিযুক্ত ক্লাসটি শেষ করেন , সেগুলি কেবলমাত্র একাধিক ফাইলে সুন্দরভাবে সংগঠিত।
এই সমাধান কিছু ক্ষেত্রে ভাল কাজ করতে পারেন - অন্যান্য ক্ষেত্রে, আপনি আপনার কোড ক্লাস যে ব্যবহার সম্পর্কে ভাবতে চাই যাচ্ছেন না মডেল, মতামত বা কন্ট্রোলার।
এটি সম্পর্কে চিন্তা করার একটি ভাল উপায় হ'ল "একক দায়িত্বের নীতি", যা বলে যে একটি শ্রেণির কোনও একক (বা অল্প সংখ্যক) জিনিসের জন্য দায়বদ্ধ হওয়া উচিত। আপনার মডেলগুলি আপনার অ্যাপ্লিকেশন থেকে ডাটাবেসে ডেটা বজায় রাখার জন্য দায়বদ্ধ। আপনার কন্ট্রোলাররা একটি অনুরোধ গ্রহণ এবং একটি কার্যক্ষম প্রতিক্রিয়া ফিরিয়ে দেওয়ার জন্য দায়বদ্ধ।
যদি আপনার কাছে এমন ধারণাগুলি থাকে যা সেই বাক্সগুলিতে ঝুঁকির সাথে ফিট করে না (জেদী, অনুরোধ / প্রতিক্রিয়া পরিচালনা), আপনি সম্ভবত এই প্রশ্নটি কীভাবে মডেল করবেন সে সম্পর্কে আপনি ভাবতে চান । আপনি অ্যাপ্লিকেশন / ক্লাসে বা অন্য কোথাও নন-মডেল ক্লাস সঞ্চয় করতে পারেন এবং তা করে আপনার ডিরেক্টরিতে ডিরেক্টরিটি যুক্ত করুন:
config.load_paths << File.join(Rails.root, "app", "classes")
আপনি যদি যাত্রী বা জেআরবি ব্যবহার করেন তবে আপনি সম্ভবত আগ্রহী লোড পাথগুলিতে নিজের পথটি যুক্ত করতে চান:
config.eager_load_paths << File.join(Rails.root, "app", "classes")
মূল কথাটি হ'ল একবার আপনি যখন এই প্রশ্নটি জিজ্ঞাসা করে রইলগুলির একটি বিন্দুতে পৌঁছাবেন, তখন আপনার রুবি চপগুলি গোছানো এবং মডেলিং ক্লাসগুলি শুরু করার সময় হবে যা কেবলমাত্র এমভিসি ক্লাস নয় যা রেলস আপনাকে ডিফল্টরূপে দেয়।
আপডেট: এই উত্তরটি রেল ২.x এবং উচ্চতর ক্ষেত্রে প্রযোজ্য।