此查询有效,但对 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 注入攻击。