Rails - 按复杂排序排序索引

时间:2018-02-16 16:25:53

标签: ruby-on-rails ruby

如何在featured_end_date >= Time.now()订单中按:asc订购我的索引结果,然后按publish_at: :desc排序其余结果。

目前我有BlogPost.order(featured_end_date: :asc, publish_at: :desc)。我错过了>= Time.now()比较。

我假设可能需要使用范围,但我不知道如何实现这一目标。

2 个答案:

答案 0 :(得分:1)

您需要在订购前指定您的收藏。您必须使用where

BlogPost.where('featured_end_date >= ?', Time.now).order(featured_end_date: :asc, publish_at: :desc)

答案 1 :(得分:1)

BlogPost模型

scope :featuredfuture, -> { where("featured_end_date >= ?", Time.now()).order(featured_end_date: :asc) }

scope :other,          -> { where("featured_end_date < ? or featured_end_date is null", Time.now()).order(publish_at: :desc) }

控制器

@blogposts = BlogPost.featuredfuture + BlogPost.other