2012-12-28 16 views
5

मैं एक रेल वसीयत 2.1वसीयत के साथ कई मॉडल के साथ अद्वितीय after_sign_out रास्तों और रेल

साथ 3.2 एप्लिकेशन है, मैं 2 मॉडल वसीयत (AdminUser और उपयोगकर्ता)

मॉडल का उपयोग कर मैंने डिवीजन जनरेटर के माध्यम से दोनों मॉडलों के लिए अलग-अलग विचार उत्पन्न किए हैं। AdminUser के लिए दृश्य/तैयार फ़ोल्डर (नई आवश्यकता से पहले महीने लागू किए गए) उपयोगकर्ता मॉडल के लिए विचार/उपयोगकर्ता फ़ोल्डर

साइनआउट के बाद, मैं विशिष्ट कार्यों से मेल खाने वाले विशिष्ट कार्यों पर रीडायरेक्ट करना चाहता हूं। नीचे दिए गए कोड application_controller.rb में काम करता है, लेकिन यह दोनों मॉडल जो मैं बिना क्या करना चाहते करने के लिए आवेदन कर रहा है:

def after_sign_out_path_for(user) 
    user_landing_path 
end 

या तो मॉडल एक ही लैंडिंग पृष्ठ पर रीडायरेक्ट से प्रस्थान करने, लेकिन मैं एक अनन्य गंतव्य करना चाहते हैं दोनों डिजाइन मॉडल के लिए।

मैं इसे कैसे प्राप्त कर सकता हूं?

उत्तर

0

कुछ चीजें आप कर सकता है:

case user.class 
when AdminUser.class 
    do_admin_sign_out() 
when User.class 
    do_user_sign_out() 
else 
    no_idea_who_you_are() 
end 

या

if user.kind_of? AdminUser 
    do_admin_thing() 
else 
    do_user_thing() 
end 
वैकल्पिक रूप से

, आप दोनों मॉडलों के लिए एक admin? जांच जोड़ने के लिए, और जाँच लें कि सकता है, अर्थात्:

if user.admin? 
    do_admin_thing() 
... 

मैं शायद बाद में करूँगा, क्योंकि यह कहीं और आ सकता है, लेकिन ये आपके विकल्पों में से हैं।

+0

जहां इस कोड एक वसीयतनामा प्रस्थान करें अनुक्रम के संदर्भ में जाना होगा देखने के बाद एक समाधान लगता है? मैं विज्ञापन-आधारित आधार पर काम कर रहे चेक देख सकता हूं, लेकिन यह सुनिश्चित नहीं करता कि यह इस मामले में कैसे फिट बैठता है जहां मैं डेविस इंजन में नियंत्रकों का उपयोग कर रहा हूं – koa