3
respostas

Aula 10 - Implementando Busca (ENUM)

Estou implementando um campo de buscas em uma aplicação, ai me deparei com a tentativa de verificar se o input de texto pode ou nao fazer parte de um ENUM. Como posso fazer isso?

Na hora de devolver os objetos estou usando o seguinte:

@supports = Support.where("status = ? AND (protocol LIKE ? OR department LIKE ?)","true", "%#{@supports_search}%", "%#{@supports_search}%")

OBS* esse department é um ENUM dos departamentos, assim a query nunca consegue satisfazer isso, já que entra um texto e não um número...

Obrigado.

3 respostas

Oi Murilo, de que enum vc ta falando, só para eu entender. Já que o Ruby não suporta enums.. Vc ta falando da simulação de enum do activerecord?

Isso mesmo! Na minha class Support estou definindo um enum p/ o departamento

class Support < ActiveRecord::Base
      enum department: [:Dúvida , :Técnico , :Sugestão]

e ai a minha dúvida é como pegar o params que esta entrando pelo input de busca, e verificar nesse enum se esse params possui parte ou se é igual ao enum! Isso para que o metodo de buscas de support possa se for parecido retornar os objetos que contemplem.

Eu utilizo ENUM por uma questão que nem sei se faz tanta diferença, mas a quantidade dado armazenado é menor, já que armazena numeros e não chars! É realmente relevante em termos de performance na aplicação? Ou se eu guardasse no banco a palavra inteira não teria tanta diferença?