【发布时间】:2017-11-29 03:46:32
【问题描述】:
我正在使用brakeman gem(它可以识别Ruby on Rails 代码中可能存在的安全问题)。我们有一个使用连接、组和选择的范围,我需要更新查询的选择部分。这个范围看起来像下面这样。我将这里范围的内容放在产品模型上。
Product.joins('LEFT JOIN orders ON orders.product_id = products.id')
.group('products.id')
.select(
"SUM(CASE WHEN orders.order_at BETWEEN '#{start_date}' AND '#{end_date}'" \
" THEN orders.qty ELSE 0 END) as qty, products.*"
)
现在如果我尝试像这样更改查询
Product.joins('LEFT JOIN orders ON orders.product_id = products.id')
.group('products.id')
.select(
"SUM(CASE WHEN orders.order_at BETWEEN ? AND ?" \
" THEN orders.qty ELSE 0 END) as qty, products.*",
'#{start_date}',
'#{end_date}'
)
它给了我? 的语法错误我还尝试了一些其他的 group 和 have 方法,但它对我不起作用。我正在使用带有 rails 4.1.8 的 postgres sql
他们有什么办法可以做到这一点吗?提前致谢。
这是错误
PG::SyntaxError: ERROR: "?" 处或附近的语法错误
第 1 行:选择 SUM(CASE WHEN orders.order_at BETWEEN ? AND ? AND ord
【问题讨论】:
-
没有足够的信息。还有here 有一个类似的无人值守问题。
标签: ruby-on-rails postgresql ruby-on-rails-4 psql