Как удалить чувствительность к регистру из всего приложения Rails? - PullRequest
2 голосов
/ 08 июля 2010

У меня довольно сложное приложение Rails, построенное поверх API Twitter, и я хочу сделать все приложение без учета регистра.

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

Нужно ли устанавливать эту проверку:

validates_uniqueness_of: username,: case_sensitive => false

где-то на каждой из моих моделей (естьмного) и удалить все экземпляры .downcase из приложения (есть тонна)?Любые другие идеи?

Примечание: это приложение еще не запущено, поэтому я не против стереть все данные, которые оно хранит прямо сейчас, при необходимости.

Ответы [ 3 ]

1 голос
/ 28 июля 2010

Я решил это с помощью Rack Middleware, см. Эту страницу: http://gehling.dk/2010/02/how-to-make-rails-routing-case-insensitive/

ОБНОВЛЕНИЕ: Этот код был обновлен для работы и с Rails 3, поэтому все еще очень хороший вариант.

0 голосов
/ 09 июля 2010

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

0 голосов
/ 09 июля 2010

Возможно установить фильтр для опции создания, которая преобразует все данные в нижний регистр ДО проверки? Тогда все данные будут считаться в нижнем регистре. В противном случае просто напишите пользовательский валидатор.

...