【发布时间】:2015-03-23 03:47:10
【问题描述】:
我正在使用带有 Sinatra API 和 Postgres 的 Sequel。我有一个名为“结果”的基本数据集:
results = Receipt.order(Sequel.desc(:date))
我正在尝试使用来自 JSON 对象的哈希过滤它,如下所示:
filters = {item: 'mortgage',
method: 'check'}
def get_filtered_results(results, filters)
filters.each do |key, value|
results = results.where('? = ?', key, value)
end
return results
end
这些 '.where' 生成的 sql 查询是:
SELECT * FROM "receipts" WHERE ('item' = 'mortgage') and ('method' = 'check') ORDER BY "date" DESC LIMIT 50 OFFSET 0;
'item' 和 'method' 周围的引号导致查询不返回任何结果 - 当我在没有引号的情况下手动运行它们时,它们会返回预期的记录。我尝试将过滤器作为哈希而不是准备好的语句传递,结果相同。有没有什么方法可以构造不带引号的查询?
编辑:当我在 pry 中构造语句时 - 所以
Receipt.order(Sequel.desc(:date)).where(:item => 'mortgage payment').where(:method => 'check')
我得到了预期的结果。
【问题讨论】:
标签: ruby postgresql sequel