将复杂的SQL查询与DataMapper集成

时间:2013-03-05 19:45:18

标签: datamapper ruby-datamapper

我有一个相当复杂的排序函数,我需要使用它涉及几个连接和一些数学。因此,无法将其合并到标准DataMapper语法中(例如User.all(:order => ...))。目前我有类似

的东西
repository(:default).adapter.select('
SELECT users.id, ( (count(table1.*) - count(table2.*))/((EXTRACT(EPOCH FROM current_timestamp)) ) as sort FROM users
LEFT JOIN table1
ON table1.user_id = users.id
LEFT JOIN table2
ON ...
AND ...
GROUP BY users.id
ORDER BY sort DESC')

但是,我想将它集成到DataMapper中,以便我可以在任何datamapper集合上调用它

例如,User.all(:name => 'bob').crazy_sort_function返回按我的特殊功能排序的名为'bob'的用户,或者User.all(:order => crazy_sort)等等... 无论哪种配方都尽可能无缝地将其集成到数据映射器ORM中。

注意:由于current_timestamp是查询的一部分,因此我不能定期为所有行编译并适合列。

0 个答案:

没有答案