Procure várias palavras, em vários modelos

Estou tentando criar a funcionalidade de pesquisa em um site e quero que o usuário possa procurar várias palavras, realizando a correspondência de substring de acordo com os critérios existentes em vários modelo

Para fins deste exemplo, digamos que tenho os seguintes modelos:

EmpregadCompanhi MunicípioMunicípi

Um município possui vários municípios, várias empresas e vários funcionário

Desejo que a pesquisa consiga pesquisar uma combinação de Employee.firstname, Employee.lastname, Company.name, Municipality.name e County.name, e quero que o resultado final seja instâncias de Employe

Por exemplo, uma pesquisa pela string "joe tulsa" deve retornar todos os Funcionários, onde ambas as palavras podem ser encontradas em algum lugar nas propriedades que eu nomeei na frase anterior. Terei alguns falsos positivos, mas pelo menos devo chamar todos os funcionários chamados "Joe" no condado de Tuls

Tentei algumas abordagens, mas não tenho certeza se estou seguindo o caminho certo. Estou procurando uma ótima maneira de fazer isso, e espero que alguém com mais sabedoria em RoR possa ajudar a delinear uma solução adequada.

O que eu tentei:

Não tenho muita experiência com esse tipo de pesquisa, mas fora do RoR, eu criaria manualmente uma instrução SQL para unir todas as tabelas, criar cláusulas where para cada palavra de pesquisa separada, cobrindo as diferentes tabelas. Talvez use um construtor. Em seguida, basta executar a consulta e percorrer os resultados, instanciar objetos Employee manualmente e adicioná-los a uma matri

Para resolver isso no RoR, eu estive:

1) Mexer com os escopos nomeados no que corresponde ao modelo do Funcionário no meu projeto, mas fiquei preso quando precisei entrar nas tabelas a dois ou mais "passos" de distância (Município e Condado

2) Criou uma view (chamada "search_view") juntando todas as tabelas, para simplificar a consulta. Então pensei em usar Employee.find_by_sql () nesta tabela, o que me renderia esses bons objetos Employee. Eu pensei em usar um construtor para criar o SQL, e parecia que Arel era o ideal, então tentei fazer algo como:

view = Arel::Table.new(:search_view)

Mas o Ariel :: Table resultante não contém nenhuma coluna; portanto, não é possível criar minha consulta. Neste ponto, estou um pouco preso, pois não sei como obter um construtor de consultas em funcionament

questionAnswers(1)

yourAnswerToTheQuestion