2013-02-02 56 views
2

我使用的是最新版本的postgresql,ruby和datamapper。如何从DataMapper :: Collection获取原始SQL?

我创建一个查询,如下所示:

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

collectionDataMapper::Collection对象。只需拨打query = collection.query即可获得DataMapper::Query对象。但是,如何获得我的查询的原始SQL,作为一个字符串?

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

我也很乐意存档我的目标的另一种方式,我愿意完全新的建议;)

+0

最好指定实际版本号而不是说“最新”。考虑一下从现在起两三年后看到这个问题的人。 – kgrittn

回答

5

这似乎是不太可能的easyly,但这是种hackish的解决方案

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

query = collection.query 

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

非常感谢你,它只是工作;) –

相关问题