Как удалить пробелы из атрибутов модели? - PullRequest
12 голосов
/ 10 ноября 2011

Какой самый простой способ убедиться, что модели обрезают начальные и конечные пробелы из строковых значений.

Один неудобный способ - это фильтр before_save - хотя для чего-то такого же общего, как удаление пробелов из строк,может быть есть какой-то конфиг, который это делает?

Ответы [ 5 ]

9 голосов
/ 10 ноября 2011

Нет встроенного параметра global / config по той причине, что вы не хотите всегда это делать, поэтому лучше делать это в каждом конкретном случае, как вы описываете, и с strip(field) в фильтре before. , Хотя есть доступный драгоценный камень, как описано Джейкобом.

Я также советую соблюдать осторожность при любых манипуляциях с пользовательскими значениями. Общепринятой практикой является сохранение «того, что» пользователь вводит, «бородавок и всего» (хорошо, пробелы в этом случае). Затем выполните внутренние операции и отформатируйте для отображения.
Основная аргументация здесь заключается в том, что когда пользователь повторно редактирует свою информацию, лучше дать ему «именно то, что он напечатал раньше», а не попадать в ловушку того, что может оказаться сложной проверкой и очень хрупким пользовательским интерфейсом.

Другой sidenote, обязательно используйте поля «соответствующие данные», например, не храните даты в строках, это напрашивается на неприятности.

3 голосов
/ 30 декабря 2011

Используйте камень strip_attributes:

https://github.com/rmm5t/strip_attributes

2 голосов
/ 10 ноября 2011

Действительно, это меня тоже немного раздражало - поэтому я написал, что

https://github.com/omarqureshi/AR-stripper

опубликует это как драгоценный камень рано или поздно, но пока что просто

gem 'stripper', :git => "git@github.com:omarqureshi/AR-stripper.git"

в вашем Gemfile будет делать

2 голосов
/ 10 ноября 2011

Мне бы просто нужен фильтр, который запускается перед проверкой и просматривает все параметры, чтобы обрезать их.Если вы поместите его в свой базовый класс контроллера, вы просто установите его и забудете.

0 голосов
/ 03 февраля 2014

Вы также можете использовать обратный вызов для удаления пробелов без использования драгоценного камня.

...