2009-04-24 11 views
5

व्यवस्थापक अनुभाग और सार्वजनिक सामना अनुभाग के साथ एक वेब ऐप डिज़ाइन करना। ऐसा लगता है कि सिर्फ "इंडेक्स" और "शो" के लिए सार्वजनिक सामना करने वाला नियंत्रक थोड़ा अनावश्यक है। मेरे द्वारा पढ़े गए सभी सुझावों का सुझाव है कि व्यवस्थापक के लिए नामस्थान, जो ठीक है। मुझे आश्चर्य है कि मेरे पास एक अतिरिक्त कार्रवाई के साथ एक नियंत्रक होना चाहिए, "list_public" या ऐसा कुछ कहें।रेल - दो नियंत्रक या क्रियाएं जोड़ना?

मैं रेल के साथ नया हूं, इसलिए शायद मैं कुछ भी नहीं जानता। मुझे बस इन सभी नियंत्रकों, विचारों, सहायकों को मेरे प्रोजेक्ट निर्देशिकाओं में बिखरे हुए नाम के साथ रखने का विचार पसंद नहीं है।

किसी को भी इसका कोई अंतर्दृष्टि है? अग्रिम में धन्यवाद।

उत्तर

7

मैं कहूंगा कि दोनों नियंत्रक (एक सार्वजनिक, और एक व्यवस्थापक) सबसे अच्छा समाधान है।

अब आप क्या कर सकते हैं दोनों नियंत्रक एक ही विधि को कॉल करते हैं जो कार्यों में संबंधित क्रियाओं को करता है।

class MyController < ApplicationController 
    def show 
    MyModel.do_all_sorts_of_stuff 
    end 
end 

class Admin::MyController < ApplicationController 
    def show 
    MyModel.do_all_sorts_of_stuff 
    # Admin only stuff goes here 
    end 
end 
+0

धन्यवाद, मैट। यह समझ में आता है कि मुझे बस कुछ सत्यापन की आवश्यकता है कि यह "ओवरडोन" नहीं है। – TMB

6

के रूप में मैट ने कहा, लेकिन आप भी ऐसा कर सकते हैं:

class MyController < ApplicationController 
    def show 
    MyModel.do_all_sorts_of_stuff 
    end 
end 

class Admin::MyController < MyController 
    def show 
    super 
    # Admin only stuff goes here 
    end 
end 

इसका मतलब यह है कि आप बस नहीं बल्कि कोड दोहरा से व्यवस्थापक :: MyController के लिए और अधिक विशिष्ट मामलों पर ध्यान केंद्रित कर सकते हैं।

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