使用Rails进行参数化查询

时间:2015-08-02 20:47:16

标签: sql ruby-on-rails activerecord

我正试图通过ActiveRecord::Base.connection执行一些手工攻击的SQL,但为了提高可读性和防止注入,我想使用像这个旧例子中的占位符:find_by_sql with array format in Rails 3而不是原始字符串内插。

我在ActiveRecord :: ConnectionAdapters :: PostgreSQLAdapter上找到的任何方法都不是connection的基础类似乎支持这种行为。

那怎么办呢?我希望结果是哈希区域,我不需要将它与任何现有的ActiveRecord范围混合。

1 个答案:

答案 0 :(得分:-1)

是的,看起来像占位符是不可选择的。我遇到同样的问题时使用了手动转义:

user_id = user_id.to_i
client = connection.quote(client.to_s)

connection.execute(
  "INSERT INTO stats (user_id, client) VALUES (#{user_id}, #{client})"
)