Я пытаюсь сделать это:Rails заполнителя при создании массива
query << ["AND f.name LIKE '%:last_name%' ", :last_name => params[:last_name] ]
Но получаю сообщение об ошибке. Конечно, синтаксис неверен. Кто-нибудь знает, как это сделать?
Я пытаюсь сделать это:Rails заполнителя при создании массива
query << ["AND f.name LIKE '%:last_name%' ", :last_name => params[:last_name] ]
Но получаю сообщение об ошибке. Конечно, синтаксис неверен. Кто-нибудь знает, как это сделать?
Это массив или хэш? первый элемент выглядит как массив, а второй - как хэш. Без какого-то контекста трудно сказать. Вы можете начать, возможно, пытаюсь это:
["AND f.name LIKE '%:last_name%' ", {:last_name => params[:last_name]} ]
Это дает мне: AND f.name LIKE '%: last_name%' last_name 'some_last_name –
Итак, укажите более подробную информацию. Что такое запрос? Почему вы добавляете этот массив к нему? – davidrac
query is: query = [] Затем я добавляю в него строку. В конце я использую JOIN, и я хочу использовать placeholder, чтобы избежать SQL-инъекции. –
, так как вы не используете рельсы 3, вы должны использовать scoped
в цепь запросов
records = Record.scoped(:conditions => { :active => true })
records = records.scoped(:conditions => ["records.name LIKE '%:last_name%' ", { :last_name => params[:last_name] }])
так что вам не придется строить запросы, как это.
Но я хочу построить запрос по частям, так как он длинный, и JOIN все штук вместе. –
Где запрос массив вы можете передать строку, так что вы не в конечном итоге с массивом массивов, вы можете сделать это:
Rails 3
query << "AND f.name LIKE '%#{params[:last_name]}%' "
Rails 2
last_name = ActionController::Base.helpers.sanitize(params[:last_name])
query << "AND f.name LIKE '%#{last_name}%' "
Это было, я начал, но он позволяет SQL Injection. –
Если вы используете рельсы 3, он по умолчанию будет дезинфицировать вход пользователя. Если бы вы не могли просто передать параметры через ActionController :: Base.helpers.sanitize (params [: last_name]) – rant
Я все равно получаю тот же результат ... –
Вы используете рельсы 3? – jvnill
"ошибка"? какая ошибка? – Dogbert
@ jvnill - Нет, я не –