2011-03-16 8 views
5

मैं अपने रूबी ऑन रेल ऐप के लिए एक रेफ़रल प्रोग्राम बना रहा हूं, जैसे कि उपयोगकर्ता एक लिंक साझा कर सकता है जिसमें उनका उपयोगकर्ता आईडी (app.com/?r=ID) शामिल है। यदि कोई रेफरर आईडी मौजूद होता है जब कोई विज़िटर ऐप के मुखपृष्ठ पर उतरता है, तो मुखपृष्ठ पर साइनअप फॉर्म में एक छिपे हुए फ़ील्ड होते हैं जो रेफरर आईडी के साथ पॉप्युलेट करता है। नियंत्रक तब आईडी का पता लगाता है और संदर्भित आगंतुक साइन अप करता है तो रेफ़रल तालिका में एक नया रेफ़रल बनाता है। यह काम करता है, और यहाँ कोड की है कि हिस्सा है:रेफ़रल प्रोग्राम - कुकीज़ और अधिक (रेल)

@referrer = User.find(params[:r]) rescue nil 
unless @referrer.nil? 
    @referral = Referral.new(:referrer_id=>@referrer.id) 
end 

सुंदर सरल सामान है, लेकिन यह तोड़ने के लिए बहुत आसान है (पूर्व: अगर आगंतुक मुखपृष्ठ से चला, तो संदर्भ आईडी खो दिया है)। मुझे लगता है कि कुकीज एक और मजबूत विधि हो सकती है, जहां संदर्भकर्ता की आईडी वाली एक कुकी निर्दिष्ट उपयोगकर्ता के कंप्यूटर पर x दिनों के लिए संग्रहीत होती है। यह काफी आम है, खासकर ग्रुपन जैसे संबद्ध कार्यक्रमों के साथ, लेकिन मैंने कभी कुकीज़ के साथ काम नहीं किया है और यह नहीं पता कि कहां से शुरू करना है।

इसके अलावा, क्या रेफ़रल सिस्टम के URL को मुखौटा या बदलने का कोई अच्छा तरीका है? इसके बजाय app.com/?r=1842 होने के, मैं app.com/x39f3 < की तरह कुछ पसंद करेंगे - किसी विशेष उपयोगकर्ता के साथ जुड़े संख्या का एक यादृच्छिक रूप से उत्पन्न अनुक्रम, r = भाग के बिना?।

किसी भी मदद की बहुत सराहना की जाती है। धन्यवाद!

उत्तर

11

कुकी सवाल का जवाब करने के लिए, यह उन्हें स्थापित करने के लिए काफी आसान है:

cookies['app-referrer-id'] = params[:r] 

और फिर यह एक ही प्रारूप है (लेकिन काम के बिना) उन्हें वापस पढ़ने के लिए। मैं इस कोड को आपके एप्लिकेशन नियंत्रक में पहले_फिल्टर में डालने का सुझाव दूंगा। इस तरह, कुकी उस पृष्ठ के बावजूद सेट की जाएगी जिस पर आपका आगंतुक पहली बार आपकी साइट पर उतरता है।

सुझाए गए प्रारूप में यूआरएल की संरचना को बदलने के संबंध में, आपको रेफ़रल कोड एक विशिष्ट पैटर्न से मेल खाना पड़ेगा, अन्यथा आपको रूटिंग समस्याओं में भाग लेने की संभावना है।

match '/:referrer_id' => 'app#index', :constraints => {:referrer_id => /[a-zA-Z]{3}[0-9]{3}/} 

एप्लिकेशन # सूचकांक के संदर्भ नियंत्रक जिसमें आप रेफरल को संभालने के लिए बदला जाना चाहिए:, उदाहरण के लिए, वे तीन नंबर के बाद 3 अक्षरों के प्रारूप का मिलान नहीं हुआ, तो आपको निम्न अपने मार्गों फ़ाइल डाल सकता है और आप पैरामीटर [: referrer_id] के माध्यम से referrer_id तक पहुंच सकते हैं।

आशा है कि यह कुछ उपयोग है।

रॉबिन

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