2013-08-16 18 views
11

Chcę potwierdzić, że nazwa użytkownika nie ma biały/spacje dla moich użytkowników. Czy istnieje wbudowane sprawdzanie poprawności, które to robi? Lub jaki jest najlepszy sposób na zrobienie tego. Wydaje się, że byłoby to dość powszechne wymaganie.Szyny Weryfikacja żadnej białej przestrzeni w polu Nazwa użytkownika

+0

Założę się, że jest to funkcja szyny, ale nie robię tworzenie stron internetowych. Domyślam się tylko, czy 'st == st [/ \ s /]'. Jeśli ciąg ma nawet jeden znak spacji, będzie to fałsz. – squiguy

Odpowiedz

38

chciałbym spróbować format validator:

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

jak większość czasu, gdy nie chcesz spacje w nazwie użytkownika również nie chcą inne znaki.

Albo kiedy naprawdę tylko trzeba sprawdzić spacji, zamiast używać without:

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

Pełna dokumentacja: http://api.rubyonrails.org/classes/ActiveModel/Validations/HelperMethods.html#method-i-validates_format_of (validates ... format: {} jest taka sama jak validates_format_of ...)

5

wierzę, trzeba będzie utworzyć własny walidator:

validate :check_empty_space 

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

Po prostu '\ s',' + 'jest niepotrzebne. – pguardiario

2

MurifoX „s odpowiedź jest lepsza, ale traktując ją jako wspólny wymóg, myślę, że to jest coraz częściej stosowany:

validates :presence

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

w modelu użytkownika dodać walidację. validates: nazwa użytkownika, format: {bez:/\ s /} usunie białe/puste spacje dla Twoich użytkowników. Możesz nawet dodać komunikat ostrzegający użytkownika, że ​​jego nazwa użytkownika zawiera białe spacje.

class User < ActiveRecord::Base 

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

end 
+0

Edytuj i uzyskaj więcej informacji. Tylko kod i odpowiedź "spróbuj tego" są odradzane, ponieważ nie zawierają treści do wyszukiwania i nie wyjaśniają, dlaczego ktoś powinien "spróbować tego". – abarisone

0

Można użyć before_validation zwrotnego rozebrać białymi

class User 
    before_validation :strip_blanks 

    protected 

    def strip_blanks 
    self.username = self.username.strip 
    end 
end 
Powiązane problemy