рельсы: как использовать привязки базы данных, где - PullRequest
1 голос
/ 29 ноября 2011

в рельсах, если я пытаюсь получить объект, используя где:

Customer.where(:name => "abc")

файл журнала показывает, что привязки базы данных не используются.

WHERE "apps"."name" = 'abc'

Теперь, если я создам новый объект

Customer.create(:name => "abc", :field => 1)

рельсы используют параметры

INSERT INTO "customers" ("name", "field") VALUES (?, ?) 

как я могу получить рельсы для использования привязок параметров базы данных и где?

Следующее утверждение также генерирует то же самое, где

Customer.where ("name =?", "Abc")

1 Ответ

2 голосов
/ 29 ноября 2011

В Rails 3.1 используются подготовленные операторы, поэтому вы увидите такие запросы:

SELECT * FROM customers WHERE customers.name = ? [["name", "abc"]]

Насколько я знаю, это работает для Postgres, а не для MySql.

В любом случае вам не нужно беспокоиться о внедрении SQL. Пожалуйста, ознакомьтесь со средствами защиты от внедрения SQL, встроенными в Rails: http://guides.rubyonrails.org/security.html#sql-injection

...