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

le_*_*_me 2 ruby postgresql ruby-datamapper

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

我创建一个这样的查询:

collection = Entry.all(:id => 2..4, :text => /test/)
Run Code Online (Sandbox Code Playgroud)

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

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

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

Kri*_*ndt 5

这似乎不太容易,但这是一种hackish解决方案

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

query = collection.query

DataMapper.repository.adapter.send(:select_statement,query)
Run Code Online (Sandbox Code Playgroud)