Question

J'ai une application où je veux migrer de MetaWhere à Squeel en vue d'une mise à niveau vers Rails 3.1.

Cela a été la plupart du temps un processus simple mais j'ai une affaire qui me fait un peu de problèmes. Le problème est que j'ai à la fois sur le terrain et la valeur spécifiée en tant que variables. Dans mon MetaWhere requêtes, je ne pouvais tout simplement créer des symboles sur les noms de champs et ensuite utiliser que dans la requête, mais Squeel ne pas utiliser des symboles, mais repose plutôt sur instance_eval et je ne peux pas comprendre comment créer une requête similaire en utilisant que ...

Une illustration de la requête initiale pourrait être:

Article.where("#{field_name}".to_sym.matches => '%' + field_value + '%')

Comment puis-je créer une requête similaire dans Squeel?

Je sais que je peux préciser que je veux utiliser la fonctionnalité symbole héritage mais je préférerais complètement convertir à la nouvelle syntaxe.

Était-ce utile?

La solution

Cela fonctionne:

Article.where{article.send(field_name) =~ '%' + field_value + '%'}

Le minuscule 'article' est le nom de la table.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top