Здесь у меня проблема с поиском записи в Postgresql DB в приложении RoR. Имя таблицы:: address_books, имя атрибутов:: organization_name, federal_tax_id, city, zip, business_name. В поиске название организации содержит: Claire Inc как запись. Во время поиска он не отображает данные, а мы выбираем Claire Inc в окне поиска. Поскольку "'" разбивает строку и не дает результата. Поэтому я использовал "?" замените "" во время поиска в mysql, и он работает. Но я получаю соответствующее преобразование для поиска этих слов.
Query :: SELECT * FROM "address_books"
WHERE ( address_books.organization_name = 'Claire?s Inc'
and address_books.federal_tax_id = '59-0940416'
and address_books.city = 'Hoffman Estates'
and address_books.zip = '60192' and address_books.business_name ='' )
ORDER BY address_books.organization_name , city LIMIT 100
Просьба предложить любой другой способ сделать успешный поиск.
Спасибо в Advance
Вы испортили свои данные, чтобы справиться с вопросом синтаксиса запроса. Поместите правильно экранированный апостроф в место, где должен быть апостроф.
Один из способов - отбросить его до 'Claire' Inc'
. Другая - использовать библиотеку, которая позволяет передавать параметры и обрабатывать экранирование для вас. Другой заключается в том, чтобы ввести строку как $$Claire Inc$$
, хотя этот синтаксис допускает другие вещи, которые могут быть неприемлемыми здесь.
Я думаю, вы можете использовать переменную параметра RoR, иначе RoR избежит ваших опасных строк для вас. что-то вроде:
AddressBook.find(:all, :conditions => { "organization_name => ?", "Claire Inc" })
или
AddressBook.find(:all, :conditions => { :organization_name => "Claire Inc" })
'
другим персонажем и просто вставьте'
туда, куда он должен идти. Синтаксис позволяет вам уйти'
чтобы не разрывать строки.