Ruby DataMapper:按计算值排序和/或过滤查询

时间:2014-03-11 20:02:07

标签: sql ruby postgresql ruby-datamapper

有没有办法,使用DataMapper :: Query :: Conditions和DataMapper :: Query :: Direction对象结构,根据计算值设置WHERE子句条件和/或ORDER BY子句?

在我们的用户模型中,我们有两个日期字段。我们的用户已要求按这两个日期之间的年数过滤和排序。由于速度问题,以及结果在数据库级别进行分页这一事实,此计算需要在数据库中完成,而不是一旦结果返回到RoR服务器。

我在Rails控制台中尝试了以下作为概念验证(使用Integer字段):

direction = DataMapper::Query::Direction.new(User.integer_field_2 - User.integer_field_one, :asc)

并出现以下错误:

NoMethodError: undefined method `-' for #<DataMapper::Property::Integer @model=User @name=:integer_field_2>

我宁愿不在直接SQL中编写查询,因为(a)这是作为泛型方法的一部分完成的,用于对(可能)User对象的任何属性进行排序和过滤,以及(b)我们正在尝试保持ORM数据库不可知(虽然目前使用PostgreSQL,所以虽然它是最后的选择,但它是一个选项)。

非常感谢任何帮助,即使它是“对不起,但直接的SQL是唯一的方法。”感谢。

0 个答案:

没有答案