因此,我有一个可以搜索视频的应用。有些视频可以免费观看,而另一些则是高级内容。是否可以检索这样的记录列表,其中高级内容排在列表的首位,常规内容排在最后:
Video1 - Premium
Video3 - Premium
Video4 - Premium
Video2 - Regular
Video5 - Regular
Video6 - Regular
视频不一定按id
进行排序,而是按状态或您可以说的“优先”排序。
我目前正在使用名为status的枚举来处理premium
和regular
。
enum status: [:regular, :premium]
我想知道是否仅通过一个查询就可以得到这样的结果,还是必须先检索所有数据,然后对其进行排序?前者似乎更有效率,这就是为什么我想知道您是否可以这样做。
您可以使用.order()
方法吗?
我知道Video.all.order(:status)
给出了一个错误,但是我不知道您是否仍然可以以略有不同的方式使用相同的查询。
答案 0 :(得分:2)
尝试...
Video.order("status = 1, status = 0")
premium的值为1,regular的值为0。
或...
Video.order(status: :desc)