Переход с MetaWhere на Squeel и от использования символов - PullRequest
2 голосов
/ 09 сентября 2011

У меня есть приложение, в котором я хочу перейти с MetaWhere на Squeel при подготовке к обновлению до Rails 3.1.

Это был в основном простой процесс, но у меня есть один случай, который вызывает у меня некоторые проблемы. Проблема в том, что у меня есть и поле, и значение, указанное в качестве переменных. В моих запросах MetaWhere я мог бы просто создавать символы из имен полей, а затем использовать их в запросе, но Squeel не использует символы, а вместо этого полагается на instance_eval, и я не могу понять, как создать подобный запрос, используя это ...

Иллюстрацией исходного запроса может быть:

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

Как мне создать подобный запрос в Squeel?

Я знаю, что могу указать, что хочу использовать устаревшие функциональные возможности символов, но я бы скорее полностью перешел на новый синтаксис.

1 Ответ

1 голос
/ 08 ноября 2011

Это работает:

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

Строчной буквой "article" является имя таблицы.

...