Migrazione dal metawhere a strillare e lontano dall'uso dei simboli
-
28-10-2019 - |
Domanda
Ho un'applicazione in cui voglio migrare dal Metawhere a Squeel in preparazione per un aggiornamento a Rails 3.1.
Questo è stato per lo più un processo semplice, ma ho un caso che mi causa un po 'di problemi. Il problema è che ho sia il campo che il valore specificato come variabili. Nelle mie query Metawhere potrei semplicemente creare simboli dai nomi dei campi e quindi usarlo nella query ma Squeel non usa i simboli ma si basa invece su Instance_eval e non riesco a capire come creare una query simile usando quella ...
Un'illustrazione della query originale potrebbe essere:
Article.where("#{field_name}".to_sym.matches => '%' + field_value + '%')
Come posso creare una domanda simile in squeel?
So di poter specificare che voglio usare la funzionalità del simbolo legacy, ma preferirei convertire completamente la nuova sintassi.
Soluzione
Questo funziona:
Article.where{article.send(field_name) =~ '%' + field_value + '%'}
L'articolo minuscolo è il nome della tabella.