diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index b06791bd3..cc832f81f 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}") @@ -51,5 +52,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