2011-11-10 14 views
12

Jaki jest najprostszy sposób, aby upewnić się, że modele przycinają wiodące i końcowe białe znaki z wartości łańcuchów.Jak usunąć białe spacje z atrybutów Model?

Jeden niewygodny sposób wydaje się być filtrem before_save - chociaż dla czegoś tak powszechnego, jak usuwanie białych znaków ze stringów, może jest jakaś konfiguracja, która to robi?

+0

Nie znam żadnej konfiguracji przeliczającej to, ale w przypadku haseł before_validation można to sprawdzić: http://stackoverflow.com/questions/4294923/rails-3-strip-whitespace-before-validation-on- all-forms – sparrovv

+0

Zobacz także [implementację tutaj] (http://railsforum.com/viewtopic.php?id=969). – Zabba

Odpowiedz

9

Nie ma wbudowanego ustawienia globalnego/konfiguracyjnego, ponieważ nie chcesz tego zawsze robić, więc lepiej jest zrobić to indywidualnie dla każdego przypadku, opisując i używając strip(field) w poprzednim filtrze. Dostępny jest klejnot opisany przez Jakuba.

Zachęcam także do zachowania ostrożności przy manipulowaniu wartościami użytkownika. Powszechnie stosowaną praktyką jest zapisywanie "cokolwiek" użytkownika, "brodawki i wszystko" (no dobrze, spacje w tym przypadku). Następnie manipuluj wewnętrznie i formatuj do wyświetlania zgodnie z wymaganiami.
Główna linia rozumowania polega na tym, że kiedy użytkownik ponownie zmienia swoje dane, lepiej dać im "dokładnie to, co napisali wcześniej", niż dać się złapać na czymś, co może zakończyć się skomplikowanymi walidacjami i bardzo kruchymi interfejsami użytkownika.

Kolejny przykład, pamiętaj o użyciu pól "odpowiednie dane", np. nie przechowuj dat w ciągach, to proszą o kłopoty.

2

Po prostu mam filtr, który działa przed sprawdzania poprawności i łza przez wszystkie parametry, aby je przyciąć. Jeśli umieścisz go na swojej klasie kontrolera podstawowego, po prostu ustaw i zapomnij.

0

Można również użyć wywołania zwrotnego do strip spacji bez użycia gem.

Powiązane problemy