के साथ टीओएस समझौते चेकबॉक्स जोड़ना हम अपने सदस्यों के लिए तैयार कर रहे हैं। हमने अपने सदस्य स्कीमा में एक tos_agreement फ़ील्ड (बूलियन) जोड़ा है, और हमने इसे views/devise/registrations/new.html.haml
में जोड़ा है। - आप TOS को स्वीकार नहीं करते हैं, तो आप पंजीकृत नहीं कर सकताडेविस
validates_acceptance_of :tos_agreement, :allow_nil => false,
:accept => true
यह ठीक काम करता है:
सदस्य मॉडल में, हम एक सत्यापन नियम इस प्रकार है।
हालांकि, समस्या आपकी सेटिंग्स को संपादित करने के साथ आता है। यदि आप /members/edit
पर जाते हैं तो आपको वह फॉर्म मिलता है जहां आप अपना ईमेल पता या पासवर्ड बदल सकते हैं। टीओएस समझौते के लिए कोई क्षेत्र नहीं है क्योंकि इस बिंदु पर इसे बदलने योग्य नहीं होना चाहिए। हालांकि, जब आप कोई परिवर्तन करते हैं (उदाहरण के लिए अपना पासवर्ड बदलें) और फॉर्म जमा करें, तो यह एक त्रुटि संदेश देता है कि TOS अनुबंध गलत नहीं हो सकता है।
हम कैसे कह सकते हैं कि पहले पंजीकरण के बाद टीओएस समझौते को संशोधित करने का प्रयास कभी नहीं किया जा सकता?
संपादित करें: इसलिए मुझे लगता है कि मौलिक समस्या यह है कि हमारे पास हमारे attr_accessible में tos_agreement था, जो अब मुझे बहुत बुरा विचार था। लेकिन अगर हम इसे हटा देते हैं, तो हम पैरामीटर को स्वीकार करने के लिए डेविस को कैसे संशोधित करते हैं और इसके साथ कुछ करते हैं, भले ही यह बड़े पैमाने पर असाइन करने योग्य न हो?
तुम भी वास्तव में इस प्रकार के लिए डेटाबेस में एक क्षेत्र बनाने की जरूरत नहीं है चर, रेल सिर्फ आपके लिए वर्चुअल फ़ील्ड बनाएंगे। http://guides.rubyonrails.org/active_record_validations.html#acceptance –