2013-08-16 2 views
11

मैं यह सत्यापित करना चाहता हूं कि उपयोगकर्ता नाम के मेरे उपयोगकर्ता के लिए कोई सफेद/रिक्त स्थान नहीं है। क्या सत्यापन में कोई अंतर्निहित है जो यह करता है? या ऐसा करने का सबसे अच्छा तरीका क्या है। ऐसा लगता है कि यह एक बहुत ही आम आवश्यकता होगी।रेल उपयोगकर्ता नाम में कोई सफेद स्थान मान्य नहीं

+0

before_validation कॉलबैक का उपयोग कर सकते मुझे यकीन है एक रेल समारोह वहाँ है, लेकिन मैं वेब विकास नहीं करते हैं। मेरा सबसे अच्छा अनुमान सिर्फ यह जांच रहा है कि 'st == st [/ \ s /]'। यदि स्ट्रिंग में एक सफेद अंतरिक्ष चरित्र भी है तो यह गलत होगा। – squiguy

उत्तर

38

मैं format validator की कोशिश करेंगे:

validates :username, format: { with: /\A[a-zA-Z0-9]+\Z/ } 

अधिकांश समय जब आप उपयोगकर्ता नाम में सफेद जगह नहीं चाहते हैं तो आप अन्य पात्र भी नहीं चाहते हैं।

या आप वास्तव में केवल, खाली स्थान के लिए जाँच के बजाय without उपयोग करने की आवश्यकता है जब:

validates :username, format: { without: /\s/ } 

सभी दस्तावेज़: http://api.rubyonrails.org/classes/ActiveModel/Validations/HelperMethods.html#method-i-validates_format_of

5

मेरा मानना ​​है कि आप एक कस्टम सत्यापनकर्ता बनाना पड़ेगा:

validate :check_empty_space 

def check_empty_space 
    if self.attribute.match(/\s+/) 
    errors.add(:attribute, "No empty spaces please :(") 
    end 
end 
+2

बस '\ s',' + 'अनावश्यक है। – pguardiario

2

MurifoX के जवाब के लिए बेहतर है, लेकिन एक आम आवश्यकता जा रहा है यह के बारे में, मुझे लगता है कि यह अधिक बार इस्तेमाल किया है:

validates :presence

class User < ActiveRecord::Base 
    validates :name, presence: true 
end 
1

(validates ... format: {}validates_format_of ... के समान है) अपने उपयोगकर्ता मॉडल में सत्यापन जोड़ें। मान्य करता है: उपयोगकर्ता नाम, प्रारूप: {बिना:/\ s /} आपके उपयोगकर्ताओं के लिए सफेद/रिक्त स्थान हटा देगा। आप उपयोगकर्ता को चेतावनी देने वाला एक संदेश भी जोड़ सकते हैं कि उनके उपयोगकर्ता नाम में व्हाइटस्पेस है।

class User < ActiveRecord::Base 

validates :username, format: { without: /\s/, message: "must contain no spaces" } 

end 
+0

कृपया अधिक जानकारी के साथ संपादित करें। केवल कोड और "इसे आज़माएं" उत्तर निराश हैं, क्योंकि उनमें कोई खोज योग्य सामग्री नहीं है, और यह समझाएं कि किसी को "इसे आजमाएं" क्यों चाहिए। – abarisone

0

आप पट्टी खाली स्थान के

class User 
    before_validation :strip_blanks 

    protected 

    def strip_blanks 
    self.username = self.username.strip 
    end 
end 
संबंधित मुद्दे