rails:如何在哪里使用数据库绑定

时间:2011-11-28 23:01:10

标签: ruby-on-rails database parameters sql-injection where-clause

在rails中,如果我尝试使用where:

获取对象
Customer.where(:name => "abc")

日志文件显示未使用任何数据库绑定。

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

现在,如果我创建一个新对象

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

rails使用参数

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

如何让rails在哪里使用数据库参数绑定?

以下语句也会生成相同的位置

Customer.where(“name =?”,“abc”)

1 个答案:

答案 0 :(得分:2)

在Rails 3.1中,使用预备语句,因此您将看到如下查询:

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

据我所知,这适用于Postgres而非MySql。

无论如何,您无需担心SQL注入。请阅读Rails内置的针对SQL注入的保护:http://guides.rubyonrails.org/security.html#sql-injection