From 1c4ae2d85b4eaca01c098b81b5a2a57694b2a679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Tue, 8 Nov 2022 15:33:12 +0800 Subject: [PATCH] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/projects/list_query.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index da56ceafb..0c1c1e3f4 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -17,6 +17,7 @@ class Projects::ListQuery < ApplicationQuery sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" + collection = optimize_sorting(collection, sort) custom_sort(collection, sort, sort_direction) # scope = scope.reorder("projects.#{sort} #{sort_direction}") @@ -57,5 +58,20 @@ class Projects::ListQuery < ApplicationQuery def by_pinned(items) (params[:pinned].present? && params[:category_id].present?) ? items.pinned : items end + + # 优化排序 + def optimize_sorting(relations, sort_by) + if sort_by == "updated_on" + relations.where("projects.updated_on>'2010-01-01'") + elsif sort_by == "created_on" + relations.where("projects.created_on>'2010-01-01'") + elsif sort_by == "forked_count" + relations.where("projects.forked_count>=0") + elsif sort_by == "praises_count" + relations.where("projects.praises_count>=0") + else + relations + end + end end