在Rails中按优先顺序检索所有记录

时间:2018-08-15 00:54:22

标签: sql ruby-on-rails ruby

因此,我有一个可以搜索视频的应用。有些视频可以免费观看,而另一些则是高级内容。是否可以检索这样的记录列表,其中高级内容排在列表的首位,常规内容排在最后:

Video1 - Premium
Video3 - Premium
Video4 - Premium
Video2 - Regular
Video5 - Regular
Video6 - Regular

视频不一定按id进行排序,而是按状态或您可以说的“优先”排序。 我目前正在使用名为status的枚举来处理premiumregular

enum status: [:regular, :premium]

我想知道是否仅通过一个查询就可以得到这样的结果,还是必须先检索所有数据,然后对其进行排序?前者似乎更有效率,这就是为什么我想知道您是否可以这样做。

您可以使用.order()方法吗?

我知道Video.all.order(:status)给出了一个错误,但是我不知道您是否仍然可以以略有不同的方式使用相同的查询。

1 个答案:

答案 0 :(得分:2)

尝试...

Video.order("status = 1, status = 0")

premium的值为1,regular的值为0。

或...

Video.order(status: :desc)