我正试图通过ActiveRecord::Base.connection
执行一些手工攻击的SQL,但为了提高可读性和防止注入,我想使用像这个旧例子中的占位符:find_by_sql with array format in Rails 3而不是原始字符串内插。
我在ActiveRecord :: ConnectionAdapters :: PostgreSQLAdapter上找到的任何方法都不是connection
的基础类似乎支持这种行为。
那怎么办呢?我希望结果是哈希区域,我不需要将它与任何现有的ActiveRecord范围混合。
答案 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})"
)