2010-09-13 17 views
17

मैं साइन अप करने के लिए उपयोगकर्ताओं के लिए एक आमंत्रण आवश्यकता जोड़ना चाहता हूं। अर्थात। उन्हें ईमेल/पासवर्ड कॉम्बो निर्दिष्ट करने की आवश्यकता के अलावा, मुझे एक अतिरिक्त फ़ील्ड चाहिए: login_code। यह एक अस्थायी फिक्स है ताकि गैर-वांछित उपयोगकर्ता किसी दिए गए अल्फा अवधि के दौरान लॉगिन नहीं कर सकें।रेल पर रूबी: देवता, आमंत्रण कोड जोड़ना चाहते हैं?

मैं उलझन में हूं क्योंकि डेविस नियंत्रकों को नहीं जोड़ता है। मैं आभासी विशेषताओं की अवधारणा से परिचित हूं, और यह मुझे मारता है कि मैं मॉडल में आमंत्रण_code जोड़ सकता हूं, और उसके बाद बस एक कदम हार्ड कोड कहां कहता है कि आमंत्रण कोड 12345 के बराबर होना चाहिए या जो कुछ भी हो।

क्या यह प्रमाणीकरण प्रमाणीकरण के साथ समझ में आता है? और मैं उचित रेलों के आराम से दृष्टिकोण से कैसे पहुंचूं?

बहुत बहुत धन्यवाद।

+0

मैं जोड़ लिया है: डीईएफ़ invite_code @invite_code अंत ... जो invite_code की अनुमति देता है आभासी विशेषता के रूप में सुलभ होने के लिए, लेकिन मुझे edit_code के लिए तर्क कहां करना चाहिए "12345" के बराबर होना चाहिए? – Dave

उत्तर

24

1) एक वर्चुअल विशेषता आमतौर पर गेटर के अतिरिक्त एक सेटटर की आवश्यकता होती है।

सबसे आसान तरीका उपयोगकर्ता मॉडल

2) मुझे लगता है वसीयत उपयोगकर्ता मॉडल को मान्य करना चाहता है कि करने के लिए

attr_accessor :invite_code 
attr_accessible :invite_code # allow invite_code to be set via mass-assignment 
    # See comment by James, below. 

जोड़ना है। तो तुम

validates_each :invite_code, :on => :create do |record, attr, value| 
    record.errors.add attr, "Please enter correct invite code" unless 
     value && value == "12345" 
end 

नोट जोड़कर सत्यापन रोक सकता है: कहा: पर =>: बनाने के बाद से invite_code केवल नए उपयोगकर्ता बनाने के लिए आवश्यक है, अद्यतन करने के लिए नहीं।

+0

यह सबसे अच्छा तरीका है, क्योंकि आप सत्यापन संदेश को नियंत्रित करते हैं। –

+0

आपको बहुत बहुत धन्यवाद। – Dave

+0

ने मुझे कुछ कारणों से – useranon

10

इस प्रयास करें: http://github.com/scambra/devise_invitable

It adds support todevise ईमेल द्वारा आमंत्रण भेजने के लिए (यह प्रमाणीकृत करने की आवश्यकता है) और निमंत्रण पासवर्ड सेट स्वीकार करते हैं।

यह डेविस> = 4.0 के साथ काम करता है यदि आप devise 3.0.x का उपयोग करना चाहते हैं, तो आपको 1.2.1 या उससे कम का उपयोग करना चाहिए यदि आप 3.1.x का उपयोग करना चाहते हैं, तो आपको 1.3.2 या उससे कम का उपयोग करना चाहिए यदि आप चाहते हैं वसीयत> = 3.2 उपयोग करने के लिए, आप 1.6.1 या उससे पहले ...

+1

लिंक के लिए धन्यवाद, लेकिन मुझे लगता है कि यह कुछ अलग करता है - यह उपयोगकर्ताओं को अन्य उपयोगकर्ताओं को आमंत्रित करने की इजाजत देता है - अब के लिए वे केवल नए उपयोगकर्ताओं के लॉक-डाउन साइन-अप को लॉक-डाउन करना चाहते हैं जब तक कि उनके पास एक निमंत्रण कोड न हो। – Dave

0

का उपयोग करना चाहिए डॉक्स के अनुसार, invitable आप जो दूसरों को आमंत्रित किया जाता पर नियंत्रण देता है। invitation_limit के लिए "0" सेटिंग होने पर लोग आमंत्रण वितरित नहीं कर सकते हैं।

डॉक्स से:

invitation_limit: निमंत्रण संख्या उपयोगकर्ताओं भेज सकते हैं। शून्य के डिफ़ॉल्ट मान का अर्थ है कि उपयोगकर्ता चाहते हैं कि कई आमंत्रण भेज सकते हैं, किसी भी उपयोगकर्ता के लिए कोई सीमा नहीं है, आमंत्रण_limit कॉलम उपयोग नहीं किया गया है। 0 की एक सेटिंग का अर्थ है कि वे निमंत्रण नहीं भेज सकते हैं। एक सेटिंग n> 0 का अर्थ है कि वे एन आमंत्रण भेज सकते हैं। आप invitation_limit स्तंभ कुछ उपयोगकर्ताओं के लिए वैश्विक invitation_limit साथ भी बदलने ताकि वे कम या ज्यादा आमंत्रण भेज सकते हैं कर सकते हैं, = 0.

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