Olá! Notei que mesmo envolvendo o nome com os caracteres %, consigo apenas pesquisar palavras pela metade, mas a busca não reconhece palavras com acento ou em letras minúsculas. Tem algo que eu possa fazer pra que isso também funcione? Abraços
Olá! Notei que mesmo envolvendo o nome com os caracteres %, consigo apenas pesquisar palavras pela metade, mas a busca não reconhece palavras com acento ou em letras minúsculas. Tem algo que eu possa fazer pra que isso também funcione? Abraços
Oi, Bianca, tem sim mas envolve um pouco de trabalho com o banco de dados. Normalmente a gente tira os acentos no Rails e compara com a forma não acentuada no banco.
A parte do Rails é tranquila mas tirar os acentos no SQLite é um pouco chato eu não me lembro de ter uma forma mais fácil sem ser usando collation
. Nele é um pouco mais complexo porque o intuito dele é ser simples e leve. Em bancos mais focados em aplicações maiores como PostgreSQL normalmente eles tem extensões para fazer isso, aí seria uma questão só de ligar. Você pode ler mais sobre essa parte do SQLite aqui
Uma alternativa simplificada pra resolver esse problema seria você fazer algo assim:
busca
no seu model do tipo stringclass Produto
(....)
before_save :ajusta_busca
private
def ajusta_busca
self.busca = I18n.transliterate(nome.downcase) # troque nome pelo atributo que você quer procurar.
# Também daria pra usar o método parameterize(separator: ' ') aí não precisaria do downcase
end
Agora toda vez que você salvar o produto o campo busca
vai valer o campo nome
só que tem os acentos então você pode usar o campo busca pra fazer as pesquisar que está querendo fazer :)
Se quiser tirar o acento das palavras digitadas pela pessoa você pode usar o transliterate
novamente.