对 ActiveRecord 产生低效或错误的 DELETE 查询感到失望,我正在寻找一种能够以安全的方式执行直接 SQL 查询的能力,没有 SQL 注入的可能性。
我知道 WHERE 子句有一个安全的变体:
MyObject.joins(:details)
.where('my_objects.my_value = ? and details.my_id = ?',
params[:value], params[:id])
的安全变体是否execute
存在?就像是:
execute(<<eos
DELETE FROM my_objects
USING details
WHERE
my_objects.details_id = details.id
AND my_objects.my_value = ?
AND details.my_id = ?
eos
, params[:value], params[:id])