Zmiana spacji na twardą spacje

Potrzebuję zrobić walidację, która wymaga spacji bądź twardą spację (_) - nie za bardzo wiem jak. Pomoże ktoś? :slight_smile:

validates_format_of :name, :with => /^([^@\s]+)'_'((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
Podchwycone z walidacji e-mail, jednak nie wiem co gdzie i jak, to nie jest nawet podobne go .gsub’ów :frowning: Chcę, żeby wyglądało to w ten sposób Tekst_Tekst (tylko dwa słowa odzielone spacją lub twardą spacją)

P.S: Źle nazwałem temat.

To raczej się kwalifikuje na jakieś before_validation:

[code]before_validation :convert_whitespace

def convert_whitespace
self.name = name.gsub(/\s/, ‘_’)
end[/code]

[quote=drogus]To raczej się kwalifikuje na jakieś before_validation:

[code]before_validation :convert_whitespace

def convert_whitespace
self.name = name.gsub(/\s/, ‘_’)
end[/code]
[/quote]
Nie. Przeczytaj co napisałem wyżej. Bo ja zrobiłem sobie już to:

[code]before_save :convert

def convert
self.name = name.gsub(/[ ]/, ‘_’)
end[/code]
Chodzi mi o samą walidacje, że:

  • Nie może być tak:

name = ‘Adrian’

  • Tylko musi być

Name = “Adrian Bangeusz” albo “Adrian_Bangeusz”

O coś takiego mi chodzi.

ale nie wiesz jak zbudować regexp-a czy gdzie go umieścić?

Jak to pierwsze, to spróbuj:

^[a-zA-Z]+[_ ]{1}[a-zA-Z]+$

btw. zobacz rabular

[quote=zlw]ale nie wiesz jak zbudować regexp-a czy gdzie go umieścić?

Jak to pierwsze, to spróbuj:

^[a-zA-Z]+[_ ]{1}[a-zA-Z]+$

btw. zobacz rabular[/quote]
Raczej Rubular - z tą uwagą, że Rubular działa na 1.8.

@Bangeusz wracajac do tematu - podszkol się z wyrażeń regularnych, bo bez tego ani rusz. Możesz rzucić okiem na moją prezentacją - jest tam trochę przykładów dla Rubiego 1.9

[quote=zlw]ale nie wiesz jak zbudować regexp-a czy gdzie go umieścić?

Jak to pierwsze, to spróbuj:

^[a-zA-Z]+[_ ]{1}[a-zA-Z]+$

btw. zobacz rabular[/quote]
Dzięki! Działa. Wiedziałem, że jest takie coś jak rubular, tylko za nic nie byłem wstanie przypomnieć sobie nazwy :slight_smile:

Jeszcze raz wielkie dzięki :wink: