diff options
Diffstat (limited to 'app/models/event.rb')
| -rw-r--r-- | app/models/event.rb | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/app/models/event.rb b/app/models/event.rb index 94a22e3..b8651a8 100644 --- a/app/models/event.rb +++ b/app/models/event.rb | |||
| @@ -1,25 +1,27 @@ | |||
| 1 | class Event < ApplicationRecord | 1 | class Event < ApplicationRecord |
| 2 | 2 | include RruleHumanizer | |
| 3 | # Associations | 3 | |
| 4 | 4 | belongs_to :node, optional: true | |
| 5 | has_many :occurrences | 5 | has_many :occurrences, dependent: :destroy |
| 6 | belongs_to :node | 6 | acts_as_taggable_on :tags |
| 7 | 7 | ||
| 8 | # Callbacks | 8 | validates :title, presence: true, unless: -> { node_id.present? } |
| 9 | 9 | ||
| 10 | after_save :generate_occurences | 10 | after_save :generate_occurrences |
| 11 | 11 | ||
| 12 | # Instance Methods | ||
| 13 | |||
| 14 | def occurrences_in_range start_time, end_time | 12 | def occurrences_in_range start_time, end_time |
| 15 | self.occurrences.where( | 13 | self.occurrences.where( |
| 16 | "start_time > ? AND end_time < ?", | 14 | "start_time > ? AND end_time < ?", |
| 17 | start_time, end_time | 15 | start_time, end_time |
| 18 | ) | 16 | ) |
| 19 | end | 17 | end |
| 18 | |||
| 19 | def display_title | ||
| 20 | title.presence || node&.head&.title || "Untitled event" | ||
| 21 | end | ||
| 20 | 22 | ||
| 21 | private | 23 | private |
| 22 | def generate_occurences | 24 | def generate_occurrences |
| 23 | Occurrence.generate self | 25 | Occurrence.generate self |
| 24 | end | 26 | end |
| 25 | end | 27 | end |
