Предоставляет ли Active Record способ генерировать SQL, который заставляет текстовый поиск учитывать регистр?
Генераторы Ruby-on-Rails, которым поручено создать столбец строкового типа, создают простое поле VARCHAR(255)
в базе данных mysql
. Оказывается, что запросов по таким столбцам нечувствительны к регистру по умолчанию .
Таким образом, поиск активной записи, такой как:
Secret.where(token: 'abcde')
будет сопоставлять записи с токенами abcde
, ABcdE
и т. Д.
Без изменения базового столбца базы данных (например, с указанием параметров сортировки utf8_bin
) поиск можно сделать чувствительным к регистру, явно настроив условие where
:
Secret.where('binary token = ?', 'abcde')
Тем не менее, это зависит от базы данных, и мне интересно, есть ли у Active Record идиома, чтобы выполнить то же самое для любой базы данных. Например, нечто, напоминающее конструкцию where.not
:
Secret.where.binary(token: 'abcde')
Разве это не было бы достаточно распространенной потребностью?