Нечувствительный к регистру поиск слов в мангоидах

Есть ли способ установить атрибут в mongoid для поиска без учета регистра?

Давайте скажем, что у кого-то есть имя пользователя: IAmGreat, и я хочу найти данные пользователей, используя их уникальное имя пользователя, не разбирая его и не меняя его на iamgreat.

Спасибо

Ответ 1

Почему при сопоставлении не просто вниз User.login.downcase (или какая бы то ни было ваша комбинация моделей/атрибутов)? Это оставит капитализацию в DB как есть, но изменит поле только для сравнения.

Ответ 2

На самом деле вы можете искать регистр без учета регистра. Но вам нужно искать регулярное выражение! Вот пример, как я использую его в http://www.VersionEye.com

User.first(conditions: {email: /^#{email}$/i})

С помощью//вы начинаете и заканчиваете регулярное выражение. "I" после регулярного выражения означает, что регистр нечувствителен. "^" Означает, что элемент должен начинаться с строки поиска, а "$" означает, что элемент должен заканчиваться поисковой строкой. Это важно, если вы ищете точное соответствие.

Ответ 3

Вы даже можете попробовать что-то вроде:

User.where(username: /#{username}/i).first

Ответ 4

Если вы используете рельсы или мангоид, вы можете попробовать ff:

@user = User.where({:username => /.*#{name}.*/i })