2011-03-19 14 views
8

के साथ बीटा साइन अप सेट अप करना मैंने हाल ही में डेलीज प्रमाणीकरण प्रणाली को रेल परीक्षण एप में एकीकृत किया है। परीक्षण ऐप में केवल एक प्रोजेक्ट मॉडल/नियंत्रक/दृश्य होता है जो प्रमाणीकरण के पीछे बैठता है।डेविस

अब मैं बीटा आमंत्रण प्रणाली जोड़ रहा हूं, ताकि केवल उपयोगकर्ता जो किसी अन्य उपयोगकर्ता से आमंत्रण प्राप्त कर चुके हों, साइट पर शामिल हो सकें। मैं इस प्रणाली को निम्नलिखित के माध्यम से कार्यान्वित कर रहा था: http://railscasts.com/episodes/124-beta-invitations

मेरी समस्या यह है कि बीटा आमंत्रण के लिए मुझे उपयोगकर्ता नियंत्रक को कुछ तर्क जोड़ने की आवश्यकता है, जिसे आप डेविस के माध्यम से नहीं कर सकते हैं। मैं उपयोगकर्ताओं का उपयोग कर एक नया पंजीकरण नियंत्रक बनाने की कोशिश कर रहा हूं :: रजिस्ट्रेशन नियंत्रक < डेविस :: रजिस्ट्रेशन नियंत्रक जो मूल रूप से डेविस नियंत्रक के समान ही होगा लेकिन मुझे बीटा आमंत्रण प्रणाली के लिए कुछ अतिरिक्त तर्क जोड़ने की अनुमति देगा।

हालांकि, मुझे यह नया नियंत्रक काम करने के लिए नहीं मिल सकता है (और मुझे यह भी परेशानी हो रही है कि मुझे इस नए नियंत्रक में क्या शामिल करना चाहिए)।

संसाधन:: मैं अपने मार्गों फ़ाइल में निम्न को शामिल किया है पंजीकरण

संसाधन: निमंत्रण

संसाधन: परियोजनाओं

devise_for: उन

devise_scope: उपयोगकर्ता कर
'उपयोगकर्ता/साइन_अप /: आमंत्रण_टोकन' => 'पंजीकरण # नया'प्राप्त करें अंत

क्या मैं इस नए पंजीकरण नियंत्रक में डाल मूल वसीयत/पंजीकरण नियंत्रक की कार्यक्षमता की नकल करने की हो?

उत्तर

10

अपने उपयोगकर्ता मॉडल में, एक सत्यापन जोड़ें जहां आप जांचते हैं कि उपयोगकर्ता का ईमेल बीटा आमंत्रण सूची में है।

यह इतना बहुत समान है: Whitelisting with devise ... मैं इसी तरह के कोड वहाँ कहा, इसे यहाँ प्रासंगिक है:

class User < ActiveRecord::Base 
    devise :database_authenticatable, :registerable #etc 

    before_validation :beta_invited? 

    def beta_invited? 
    unless BetaInvite.exists?(:email=>email) 
     errors.add :email, "is not on our beta list" 
    end 
    end 

end