diff --git a/app/models/ability.rb b/app/models/ability.rb index d3f9815..5e9cf14 100755 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -92,7 +92,7 @@ class Ability # Rechteverwaltung fuer Neuigkeiten can :index, Rubrik can [:show], Rubrik, :public=>true - can [:list], Neuigkeit, Neuigkeit.public.published + can [:list], Neuigkeit, :cache_published=>true, :public=>true can :show, Neuigkeit, :rubrik=>{:public=>true} if loggedin diff --git a/app/models/neuigkeit.rb b/app/models/neuigkeit.rb index b9d5638..177936f 100755 --- a/app/models/neuigkeit.rb +++ b/app/models/neuigkeit.rb @@ -40,7 +40,10 @@ class Neuigkeit < ActiveRecord::Base def is_annoncement? - self.meeting.nil? + !self.meeting.nil? + end + def has_meeting? + !self.meeting.nil? end def self.published where("datum <= ? AND datum IS NOT NULL", Time.now.to_date) @@ -94,22 +97,27 @@ class Neuigkeit < ActiveRecord::Base self.has_calentries? end def update_cache - if is_event? - unless self.calentries.upcoming.first.nil? - self.update_column(:cache_order, (self.calentries.upcoming.first.start.to_date - Date.today).to_i.abs) - self.update_column(:cache_relevant_date, self.calentries.upcoming.first.start.to_date) - else - unless self.calentries.recent.first.nil? - self.update_column(:cache_order, (self.calentries.recent.first.start.to_date - Date.today).to_i.abs) - self.update_column(:cache_relevant_date, self.calentries.recent.first.start.to_date) + if self.has_meeting? && !self.meeting.calentry.nil? + self.update_column(:cache_order, (self.meeting.calentry.start.to_date - Date.today).to_i.abs) + self.update_column(:cache_relevant_date, self.meeting.calentry.start.to_date) + else + if self.is_event? + unless self.calentries.upcoming.first.nil? + self.update_column(:cache_order, (self.calentries.upcoming.first.start.to_date - Date.today).to_i.abs) + self.update_column(:cache_relevant_date, self.calentries.upcoming.first.start.to_date) + else + unless self.calentries.recent.first.nil? + self.update_column(:cache_order, (self.calentries.recent.first.start.to_date - Date.today).to_i.abs) + self.update_column(:cache_relevant_date, self.calentries.recent.first.start.to_date) + end end - end - else - unless self.datum.nil? - self.update_column(:cache_order, (self.datum.to_date - Date.today).to_i.abs) - self.update_column(:cache_relevant_date, self.datum.to_date) else - self.update_column(:cache_order,0) + unless self.datum.nil? + self.update_column(:cache_order, (self.datum.to_date - Date.today).to_i.abs) + self.update_column(:cache_relevant_date, self.datum.to_date) + else + self.update_column(:cache_order,0) + end end end unless self.published? diff --git a/config/schedule.rb b/config/schedule.rb index 65bfc1f..0ca81ac 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -1,3 +1,6 @@ every 1.day, :at =>'5:00 am' do rake "-s sitemap:refresh" end +every 1.day, :at =>'4:00 am' do + rake "-s neuigkeit_cache:update" +end diff --git a/lib/tasks/neuigkeit_cache.rake b/lib/tasks/neuigkeit_cache.rake new file mode 100644 index 0000000..376638a --- /dev/null +++ b/lib/tasks/neuigkeit_cache.rake @@ -0,0 +1,7 @@ +namespace :neuigkeit_cache do + task :update =>:environment do + Neuigkeit.all.each do |n| + n.update_cache + end + end +end \ No newline at end of file