Переход с MetaWhere на Squeel и от использования символов
У меня есть приложение, где я хочу перейти с MetaWhere на Squeel при подготовке к обновлению до Rails 3.1.
Это был в основном простой процесс, но у меня есть один случай, который вызывает у меня немного проблем. Проблема в том, что у меня есть и поле, и значение, указанное в качестве переменных. В моих запросах MetaWhere я мог просто создать символы из имен полей, а затем использовать их в запросе, но Squeel не использует символы, а вместо этого полагается на instance_eval, и я не могу понять, как создать подобный запрос, используя это...
Иллюстрацией исходного запроса может быть:
Article.where("#{field_name}".to_sym.matches => '%' + field_value + '%')
Как мне создать подобный запрос в Squeel?
Я знаю, что могу указать, что хочу использовать устаревшие функциональные возможности символов, но я бы предпочел полностью перейти на новый синтаксис.
1 ответ
Это работает:
Article.where{article.send(field_name) =~ '%' + field_value + '%'}
Строчная буква "article" - это имя таблицы.