【发布时间】:2012-08-06 15:56:15
【问题描述】:
此查询有效,但对 SQL 注入完全开放:
products = Product.find(pids,
:select => 'products.*, P.code',
:joins => "left join product_dist_match P on
(P.pid = products.pid and P.cid = #{cid})",
)
如何正确转义 cid 变量? conditions 参数允许为此目的使用 ['foo = ?', bar] 格式,但 joins 不允许。
我不想使用find_by_sql,因为这样我就需要添加属于模型默认范围(不会是 DRY)的连接和条件。
编辑:我的表结构基本上是这样的:
products: pid (primary key)
product_dist_match: pid, cid, code
customers (not used in the query): cid (primary key)
请注意,这是一个只读数据库,Rails 仅参与有限。我不打算为所有表设置模型;我只想做一个如上所述的简单查询,而不会让自己受到 SQL 注入攻击。
【问题讨论】:
-
你能描述一下你的表结构吗?这可能通过使用哈希条件来实现
标签: mysql sql ruby-on-rails ruby-on-rails-3 activerecord