rails activerecord准备好的声明

时间:2016-07-20 13:29:14

标签: sql ruby-on-rails postgresql prepared-statement rails-activerecord

我正在开发的项目使用rails 4.0.2和postgress 9.4.7 我是rails的新手,我想知道rails active record是否创建了prepend语句

当我运行此行时:

 User.where(id:123)

日志说:

 SELECT "users".* FROM "users" WHERE "users"."id" = 123

但是当我跑这条线时:

当我运行此行时:

 User.find(123)

日志说:

 SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1  [["id", 123]]

为什么会有区别?哪个更安全? 我认为使用where()的第一个版本只是转义数据 而使用find()的第二个版本使用prepend语句是正确的吗? 是否可以使用where来创建像第二个版本的查询?

2个有用的链接

What is the purpose of ActiveRecord::Relation#bind?

http://apidock.com/rails/v4.0.2/ActiveRecord/FinderMethods/find_one

0 个答案:

没有答案