From 57cf170e1c278614433ec88a4cea1ed0b40c206d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B1=E5=8D=9A=E4=BA=9E?= Date: Mon, 30 Sep 2024 09:46:02 +0800 Subject: [PATCH] fix sorting --- app/models/event_news.rb | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/app/models/event_news.rb b/app/models/event_news.rb index 0e66401..9d3081f 100644 --- a/app/models/event_news.rb +++ b/app/models/event_news.rb @@ -106,10 +106,18 @@ class EventNews before_destroy :destroy_email scope :open_in_future, ->{where(:is_hidden.ne=>true,:is_preview.ne => true,:postdate.gt=>Time.now).order(postdate: :asc)} - scope :can_display_and_sorted, ->{where(:is_hidden.ne=>true,:is_preview.ne => true).valid_time_range} + scope :can_display_and_sorted, ->{ + where(:is_hidden.ne=>true,:is_preview.ne => true) + .valid_time_range + .order( + EventNewsHelper.is_postdate_sort_first ? + {postdate: :desc, event_date: :desc, id: :desc} : + {event_date: :desc, postdate: :desc, id: :desc} + ) + } scope :can_display_and_sorted_according_today, ->{ where(:is_hidden.ne=>true,:is_preview.ne => true) - .order(event_date: :asc).valid_time_range.where(:event_date.gte => Date.today.to_time) + .order(event_date: :asc).valid_time_range.order({postdate: :asc, id: :asc}).where(:event_date.gte => Date.today.to_time) } scope :valid_time_range, ->{ and_any_of([ @@ -117,14 +125,9 @@ class EventNews {"postdate"=>{"$lte"=> Time.now}, "deadline"=>nil} ]) .order( - (EventNewsHelper.enable_manually_sort ? + EventNewsHelper.enable_manually_sort ? {is_top: :desc, sort_number: :asc} : {is_top: :desc} - ).merge( - EventNewsHelper.is_postdate_sort_first ? - {postdate: :desc, event_date: :desc, id: :desc} : - {event_date: :desc, postdate: :desc, id: :desc} - ) ) } scope :is_approved, ->{where(:approved => true)}