【发布时间】:2015-08-21 03:41:32
【问题描述】:
在 ActiveRecord(使用 Ruby on Rails)中,如果我有 @products 变量 where @products = Product.all,我会说:
@products.where("name = 'check123' "),它返回一个匹配该条件的对象数组,但是如果我去@products.where('name="check123"') 我得到一个错误?
: SELECT "products".* FROM "products" WHERE (name = "check123")
Hirb Error: PG::UndefinedColumn: ERROR: column "check123" does not exist
LINE 1: SELECT "products".* FROM "products" WHERE (name = "check123"...
^
为什么会这样?似乎我必须始终在 where 子句中的所有内容周围使用双引号,对其中的任何字符串使用单引号?
单引号不应该在这里也起作用,还是我没有得到什么
其他一些观察:
@products.where("cost = '23.0'") 有效,尽管事件 23 的数据类型是整数而不是字符串?
@products.where('cost = 23') 有效,所以我知道我可以在 where 子句中使用单引号
注意:我知道使用“?” where 子句中的语法以避免 sql 注入,我故意尝试像这样执行查询。
【问题讨论】:
-
我很好奇你为什么要故意将一个加载的 RPG 指向自己的脚。
标签: sql ruby-on-rails ruby ruby-on-rails-4 rails-activerecord