【发布时间】:2017-09-01 04:39:30
【问题描述】:
我在 Rails 中有一个查询,它根据一系列 OR 语句获取一组记录。
@properties = policy_scope(Property).withdrawn_query(@hotlist_preference.withdrawn?)
.or(policy_scope(Property).fallen_through_query(@hotlist_preference.fallen_through?))
.or(policy_scope(Property).time_on_market_query(@hotlist_preference.time_on_market?))
.includes(:listings).paginate(page: params[:page], per_page: 20)
基本上有 3 个查询,更简单的版本可能如下所示:
@properties = Property.where(state = withdrawn).or(where(state = fallen_through)).or(where(age = 4.weeks.ago))
我想要做的是按每个结果满足的 OR 条件的数量对该查询进行排序。假设有一个属性处于撤销状态,并且它的年龄是 2 周前,它的订单值为 2。如果可能的话,我还想将订单值添加到返回的属性哈希中,这样我就可以使用它在视图中。
我一直在努力寻找一种干净的方法来执行此操作,而无需再次通过一组相同的查询运行结果。
【问题讨论】:
-
你用的是什么数据库?
-
我不知道 ActiveRecord 是否支持此功能,但您可以考虑使用raw SQL 来实现此功能吗?
-
我正在使用 PostgreSQL
标签: sql ruby-on-rails activerecord