2012-07-11 14 views
7

में मल्टी एडमिन उपयोगकर्ता मैं मुख्य व्यवस्थापक इंटरफ़ेस के रूप में ActiveAdmin के साथ एक बहु-किरायेदार ऐप बना रहा हूं। मैंने डेटा को अच्छी तरह से अलग करने के लिए act_as_tenant मणि का उपयोग किया है।मल्टी टेनेंट, ActiveAdmin

मैंने AdminUser मॉडल को सभी उपयोगकर्ताओं के लिए उपयोगकर्ता मॉडल ऑब्जेक्ट के रूप में उपयोग किया है।

अन्य उपयोगकर्ताओं को जोड़ने के लिए, AdminUser किरायेदार को भी स्कॉप्ड किया गया है।

यह लॉगिन बंद फेंक रहा है, क्योंकि जब ActiveAdmin/वसीयत को प्रमाणित करने की कोशिश करता है, मैं जैसा कि नीचे दिखाया यह पहली find_tenant फिल्टर मार रहा है मान:

class ApplicationController 
    set_current_tenant_through_filter 

    before_filter :find_tenant 

    def find_tenant 
    if admin_user_signed_in? 
     set_current_tenant(Company.find(current_admin_user.company_id)) 
    end 
    end 

सुनिश्चित नहीं हैं कि इस के आसपास पाने के लिए ... मैं उपयोगकर्ता को लॉगिन करना चाहता हूं और फिर एप्लिकेशन लॉग इन उपयोगकर्ता से company_id लेता है और किरायेदार सेट करता है और ActiveAdmin पर दिखाए गए सभी डेटा को उस किरायेदार के माध्यम से स्कॉप्ड किया जाता है (यदि यह लॉगिन लॉग इन कर सकता है तो यह हिस्सा act_as_tenant मणि के माध्यम से अच्छी तरह से काम करता है) ।

धन्यवाद

उत्तर

0

मुझे लगता है कि अपने शक सही हैं, और कि find_tenant विधि प्रमाणीकरण से पहले बुलाया जा रहा है, admin_user_signed_in में जिसके परिणामस्वरूप? झूठा होना फिल्टर के बाद इसका उपयोग करने के लिए इसे समायोजित करने के बजाय, यह चाल चलनी चाहिए, अगर यह वास्तव में मामला है (http://guides.rubyonrails.org/action_controller_overview.html#after-filters-and-around-filters से)।

class ApplicationController 
    set_current_tenant_through_filter 

    after_filter :find_tenant 

    def find_tenant 
    if admin_user_signed_in? 
     set_current_tenant(Company.find(current_admin_user.company_id)) 
    end 
    end 

यकीन है कि कैसे set_current_tenant_through_filter इस सब में काम करता है, तो आप एक ही बात दो अलग अलग तरीकों करने के लिए कोशिश कर रहे हैं नहीं कर रहे?

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