У меня есть приложение Rails 3, которое содержит объекты Article. У них есть атрибут заголовка. Перед добавлением новой статьи люди должны выполнить поиск, чтобы узнать, существует ли уже статья с названием.
Сегодня кто-то сообщил о дублировании статьи. Оказывается, кто бы ни добавил его, он сначала искал его, но в заголовке было умлаут над «о». Они искали без умлаута, используя обычный символ «о», не нашли его и добавили дубликат.
Я делаю простой поиск атрибута title с областью действия, как показано ниже:
scope :search, lambda { |term| where('title like ?', "%#{term}%") }
Мне интересно, есть ли простой способ "игнорировать" диакритические знаки, чтобы человек мог напечатать "o" и все же найти статью, если у o есть умлаут, и то же самое для других диакритических знаков.
Я подумал о создании атрибута search_title и его заполнении при обновлении, заменяя диакритические знаки их простыми эквивалентами, но у них есть свои проблемы, в том числе, что если кто-то затем использует диакритический знак.
Я надеялся, что для этого может быть простое решение, но я не надеюсь на это. : -)