如何从DataMapper :: Collection获取原始SQL?

时间:2013-02-02 09:10:07

标签: ruby postgresql ruby-datamapper

我正在使用最新版本的postgresql,ruby和datamapper。

我创建了一个类似的查询:

collection = Entry.all(:id => 2..4, :text => /test/)

collectionDataMapper::Collection个对象。只需调用DataMapper::Query即可获得query = collection.query对象。但是如何以字符串形式获取查询的原始SQL?

我需要它,因为我必须自定义原始SQL(我需要SELECT DISTINCT而不是SELECT),但我不想完全自己编写SQL,因为我是不确定我是否可以编写安全查询。

我也很乐意以另一种方式归档我的目标,我愿意接受全新的建议;)

1 个答案:

答案 0 :(得分:5)

这似乎不是那么容易实现,但这是一种hackish解决方案

collection = Entry.all(:id => 2..4, :text => /test/)

query = collection.query

DataMapper.repository.adapter.send(:select_statement,query)