#ruby-on-rails #activerecord
#ruby-on-rails #activerecord
Вопрос:
Есть ли какой-либо способ использовать параметры привязки в rails для выбора метода активной записи?
У меня есть запрос типа
SELECT column * #{param1} / #{param2} as value
FROM table
ORDER BY value
Итак, у меня есть внешние параметры, которые я хочу привязать.
Нужно что-то вроде
Table.select('column * :param1 / :param2 as value',
{param1: param1, param2: param2})
.order('value').all
Ошибка в этом запросе
Unsupported argument type: Hash. construct an Arel node instead.
Комментарии:
1. Если вы еще этого не сделали, я настоятельно рекомендую вам прочитать руководство Rails по интерфейсу запросов. Он расскажет вам, что вам нужно знать: guides.rubyonrails.org/active_record_querying.html 🙂 В нем должно быть описано, как добавлять параметры в блоки запросов … также вы пробовали то, что предлагаете? это не удалось? если да — можете ли вы сообщить нам сообщение об ошибке, которое вы получили?
2. Я попробовал этот запрос и попытался покрыть его
[]
, ноselect
не ожидайте этих аргументов. Также я искал решение в документации и в Google, но не нашел ничего похожего с моей проблемой3. «можете ли вы сообщить нам сообщение об ошибке, которое вы получили?» 🙂 Также — вы пробовали обычную интерполяцию строк… просто чтобы посмотреть, работает ли это? (вы не хотите сохранять интерполяцию строк, поскольку это небезопасный sql, но для проверки, есть ли что-то серьезное в вашем запросе, стоит попробовать)
4. @TarynEast Обычная строка -интерполяция сработала нормально, в вопрос добавлено сообщение об ошибке
5. круто, так что, по крайней мере, мы можем быть уверены, что просто selects не нравится hash-config, а не что-то не так с оператором…