2010-07-26 12 views
6

पर रूबी मैं एक .NET लड़का हूं और मैं रेल और इसकी सक्रिय रिकॉर्ड सामग्री के पीछे अवधारणा को समझने की कोशिश करता हूं।रेल वास्तुकला मॉडल, देखें और डीटीओ

जैसा कि मैं सभी उदाहरणों में देख सकता हूं, वे हमेशा मानते हैं कि आपका विचार आपके मॉडल की 1: 1 प्रति है। हकीकत में अक्सर यह सच नहीं है।

एक राय यह है कि एक ग्राहक और संपर्क व्यक्ति (यों) कर रहे हैं नहीं है कि ग्राहक से संबंधित रखती है जैसा

। उपयोगकर्ता दोनों दृश्यों (ग्राहक और संपर्क व्यक्तियों को एक दृश्य में संपादित करने में सक्षम होना चाहिए उदा।)

प्रत्येक उदाहरण में मैं देखता हूं कि वे सीधे एक सक्रियरेकॉर्ड ऑब्जेक्ट पर दृश्य को बाध्य करते हैं। मॉडल, सत्यापन और इतनी सारी चीजें जैसे कि एक ऑब्जेक्ट से बांधें जो सीधे डेटाबेस पर मैप किया गया हो।

क्या एक रेल लड़का समझा सकता है कि जटिल मॉडल परिस्थितियों में वास्तविक जीवन अनुप्रयोगों में सक्रिय रिकॉर्ड के साथ काम करने का एक शानदार तरीका क्या है? पहले पल में मैं डीटीओ के बारे में सोच रहा था लेकिन मैं कल्पना नहीं कर सका कि रेल के साथ जाने का यह तरीका है।

उत्तर

0

क्योंकि रेल एक एमवीसी आर्किटेक्चर का उपयोग करते हैं, यह पूरी तरह से संभव है — और अक्सर सामान्य — एक नियंत्रक है जो एकाधिक मॉडलों को समन्वयित करता है और उन्हें प्रतिपादन के लिए दृश्य प्रदान करता है।

मुझे लगता है कि डेटा ट्रांसफर ऑब्जेक्ट्स के बारे में सोचना एक अंधे गली है क्योंकि वे सिर्फ गूंगा डेटा धारक हैं और रेल में ActiveRecord मॉडल अधिक स्मारक हैं। उन्होंने मॉडलों को जोड़ा है (मुझे पता है कि डीटीओ के पास अन्य डीटीओ के साथ संरचनात्मक रिश्ते हो सकते हैं), कस्टम खोजक विधियों और एक प्रारंभ के लिए सत्यापन तर्क।

1

जॉन के साथ सहमत ....

आप से पूछा:। "एक राय यह है कि एक ग्राहक और संपर्क व्यक्ति (यों) कि है कि ग्राहक से संबंधित नहीं हैं रखती है जैसा उपयोगकर्ता दोनों (ग्राहक को संपादित करने में सक्षम होना चाहिए और संपर्क व्यक्ति (ओं) एक दृश्य में उदाहरण के लिए) "

ठीक है, तो यह एक ग्राहक मॉडल है जिसमें कुछ कर्मचारी हैं, है ना? यदि नहीं, तो "व्यक्ति"

/app/model/customer.rb साथ "कर्मचारी" की जगह

Class Customer < ActiveRecord::Base 
    has_many :employees 
    accepts_nested_attributes_for :employees 
end 

/app/model/employee.rb

Class Employee < ActiveRecord::Base 
    belongs_to :customer 
end 
तब के अपने दृष्टिकोण में

ग्राहक /app/views/customers/show.html.erb

<%= form_for(@customer) do |f| %> 

<%= f.text_field :name %> 
.... yada yada .... 

<%= f.fields_for(:employees) do |ef} %> 
    <%= ef.text_field :first_name%> 
    <%= ef.text_field :phone %> 
<% end %> 

<%= f.submit %> 

<% end %> 

ऊपर 1 प्रपत्र आप वें बचाने की सुविधा देता है है ई ग्राहक और उसके कर्मचारी। नेस्ड फॉर्म कहा जाता है, और मुझे लगता है कि "मॉडल देखें" की आवश्यकता है।

यदि आप इसे समूहबद्ध करते हैं तो वास्तविक जीवन को कैसे समूहीकृत किया जाता है, यह बहुत आसान हो जाता है।

+0

ठीक है क्योंकि वे संबंधित हैं, लेकिन क्या होगा यदि वे संबंधित नहीं हैं? क्या form_for (@customer) और form_for (@employee) को एक रूप में उपयोग करना संभव है? – awex

+1

सुनिश्चित करें कि आप कर सकते हैं। यह शायद किसी प्रकार के डैशबोर्ड नियंत्रक पर खत्म हो जाएगा, लेकिन आपके पास HTML पृष्ठ पर दो या दो से अधिक रूप हो सकते हैं। –

संबंधित मुद्दे