Rails 3 Dynamic Escaped Query неправильное количество переменных связывания

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

def results

  sql_clauses = Array.new
  sql_args = Array.new

  unless params[:elapsed_time].nil?
    sql_clauses << "elapsed_time = ?"
    sql_args << params[:elaped_time] 
  end
  unless params[:age_greater_than].nil?
    sql_clauses << "age > ?"
    sql_args << params[:age_greater_than]
  end
  .....
  @results = Model.where(sql_clauses.join(" and "), sql_args.join(", "))

end

Теперь это без проблем отправляет массив sql_clauses в метод where. Но он терпит неудачу со вторым аргументом, потому что возвращает одну строку и ожидает отдельные переменные в соответствии с каждым из "?" поля, которые появляются в массиве sql_clauses. Я пробовал решения, предложенные КандадаБоггу на Comine массивы условий в рельсах. Ни один из этих вариантов мне не помог, но, возможно, это связано с тем, что я использую 2 массива вместо 1.

Кто-нибудь знает решение моей проблемы?

0
задан Community 23 May 2017 в 12:05
поделиться