提示:如有转载请注明作者 小游戏 及出处
当我们进行进行activerecord操作时, :conditions使我们最为常用的组合条件表达式的地方,有几种方式可以把外部参数传入其中
1.用#{para}的方式传递参数,但是这种方式最不安全,容易被sql注入攻击
2.conditions值为一数组,数组的第一个元素为模板字符串,用?当占位符,其他元素为实际值,代替前面的占位符,如conditions=>['a=? and b=?', 10, 20]
3.conditions值为一数组,数组的第一个元素为模板字符串,用命名的占位符,占位符的表示方式以:为开始,也就是ruby中的符号类型, 第二个元素是个哈希表,要替代的元素都在这里面表示,如果conditions=>['a=:a and b=:b',{:a=>10, :b=>20}]
4.like从句的构造也要遵从上面的原则,不能用?与字符产在模板中构成从句,也就是["a like '?eee'", 'ddd']不正确,而[“a like ?”, '?' + 'ddd']是正确的