【发布时间】:2015-04-20 16:40:00
【问题描述】:
所以我有一个如下所示的 update_all 查询:
Task.where(...).update_all('position = position - X, parent_id = Y')
我想用整数值替换 X 和 Y。我想安全地做到这一点:“铁路方式”。 知道如何实现这一目标吗?
编辑:我的 rails 控制器中没有位置变量。如果 X = 1,则最终查询应按字面意思包含“position=position-1”。
另外,update_all documentation 指定此方法只接受一个参数:表示 SQL 语句的 SET 部分的字符串、数组或散列。
编辑 2:好的,我通过稍微调整 Arup Rakshit 解决方案使其工作。这是最终的工作解决方案:
Task.update_all(['position = position - ?, parent_id = ?', X, Y])
【问题讨论】:
-
假设 X= 2, Y = 3 然后
Task.where(...).update_all('position = position - #{X}, parent_id = #{Y}') -
已更新..请尝试..它会工作。
标签: sql ruby-on-rails escaping sql-injection