From c8dbe53aa80c4d4a38566459c78b9fdd4922c5c4 Mon Sep 17 00:00:00 2001 From: Morgan Roderick Date: Wed, 15 Jul 2026 07:42:19 +0200 Subject: [PATCH] fix: inline EventHelper concern into Event model EventHelper was a single-model concern (only used by Event). Inline its validation methods directly into Event and remove the concern file to eliminate unnecessary indirection. This follows the precedent set by inlining Permissions into Member. --- app/models/concerns/event_helper.rb | 23 ----------------------- app/models/event.rb | 23 ++++++++++++++++++++++- 2 files changed, 22 insertions(+), 24 deletions(-) delete mode 100644 app/models/concerns/event_helper.rb diff --git a/app/models/concerns/event_helper.rb b/app/models/concerns/event_helper.rb deleted file mode 100644 index 8e5244d23..000000000 --- a/app/models/concerns/event_helper.rb +++ /dev/null @@ -1,23 +0,0 @@ -module EventHelper - def venue_or_remote_must_be_present - if !virtual && !venue - errors.add(:venue, 'must be set, or event must be marked as virtual') - end - end - - def sponsors_uniqueness - errors.add(:sponsors, :duplicated_sponsor) unless (sponsors.map(&:id) & duplicated_sponsors).empty? - end - - def bronze_sponsors_uniqueness - errors.add(:bronze_sponsors, :duplicated_sponsor) unless (bronze_sponsors.map(&:id) & duplicated_sponsors).empty? - end - - def silver_sponsors_uniqueness - errors.add(:silver_sponsors, :duplicated_sponsor) unless (silver_sponsors.map(&:id) & duplicated_sponsors).empty? - end - - def gold_sponsors_uniqueness - errors.add(:gold_sponsors, :duplicated_sponsor) unless (gold_sponsors.map(&:id) & duplicated_sponsors).empty? - end -end diff --git a/app/models/event.rb b/app/models/event.rb index 2dd5a784a..73219aa75 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -2,7 +2,6 @@ class Event < ApplicationRecord include DateTimeConcerns include Listable include Invitable - include EventHelper attr_accessor :local_date, :local_time, :local_end_time @@ -102,4 +101,26 @@ def fetch_duplicated_sponsors ids = sponsorships.reject(&:marked_for_destruction?).map(&:sponsor_id) ids.select { |e| ids.count(e) > 1 } end + + def venue_or_remote_must_be_present + if !virtual && !venue + errors.add(:venue, 'must be set, or event must be marked as virtual') + end + end + + def sponsors_uniqueness + errors.add(:sponsors, :duplicated_sponsor) unless (sponsors.map(&:id) & duplicated_sponsors).empty? + end + + def bronze_sponsors_uniqueness + errors.add(:bronze_sponsors, :duplicated_sponsor) unless (bronze_sponsors.map(&:id) & duplicated_sponsors).empty? + end + + def silver_sponsors_uniqueness + errors.add(:silver_sponsors, :duplicated_sponsor) unless (silver_sponsors.map(&:id) & duplicated_sponsors).empty? + end + + def gold_sponsors_uniqueness + errors.add(:gold_sponsors, :duplicated_sponsor) unless (gold_sponsors.map(&:id) & duplicated_sponsors).empty? + end end