सरोकार एक सरल लेकिन शक्तिशाली अवधारणा है। यह कोड पुन: प्रयोज्य के लिए मौजूद है। मूल रूप से, मॉडल को साफ करने और बहुत अधिक वसा और असहनीय होने से बचने के लिए विचार को कोड के सामान्य और / या संदर्भ विशिष्ट विखंडू को निकालना है।
मैं स्पष्ट रूप से निर्दिष्ट करना चाहूंगा कि आपको कार्यक्षमता प्रदान करने के लिए सेवा वस्तुओं का उपयोग करना चाहिए जो विशिष्ट वस्तु की चिंता नहीं है। जैसे एक संगठन में कई उपयोगकर्ता होते हैं। अब संगठन के व्यवस्थापक को इस संगठन के लिए सभी उपयोगकर्ताओं का CSV निर्यात करने की आवश्यकता है। इस कोड को संगठन मॉडल में रखा जा सकता है, लेकिन चूंकि यह संगठन ऑब्जेक्ट की जिम्मेदारी नहीं है, इसलिए इस कोड को एक ऐसे वर्ग में रखा जाना चाहिए, जहां यू सिर्फ संगठन ऑब्जेक्ट को पास करता है और यह सभी उपयोगकर्ताओं के CSV को लौटाता है।
class Services::GenerateCsv
def self.get_users org
#add logic the fetch users for the org and generate the CSV and return the CSV data
end
end
जब भी आपको CSV पीढ़ी की आवश्यकता होती है, तो आप उस तर्क को उपरोक्त वर्ग में रख सकते हैं। यह दृष्टिकोण ऑब्जेक्ट (इस मामले में, संगठन मॉडल) को उस कोड से साफ रखता है जो इसकी जिम्मेदारी नहीं होनी चाहिए। एक सामान्य सिद्धांत जिसका मैं अनुसरण करता हूं: यदि यह कोड स्व ऑब्जेक्ट को संशोधित कर रहा है, तो कोड को सेवा ऑब्जेक्ट पर ले जाएं।
नोट: आपका प्रश्न चिंताओं के बारे में था, लेकिन मैंने कुछ अतिरिक्त सामान जोड़ने के बारे में सोचा था जो मैं कोड बेस को साफ और प्रबंधनीय रखने के लिए अनुसरण करता हूं क्योंकि यह साथी प्रोग्रामर की मदद कर सकता है। यह उपरोक्त दृष्टिकोण बहस का मुद्दा है।