123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- class Activity < ApplicationRecord
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- belongs_to :group
- has_many :participants
- has_many :people, through: :participants
- validates :public_name, presence: true
- validates :start, presence: true
- validate :deadline_before_start, unless: "self.deadline.blank?"
- validate :end_after_start, unless: "self.end.blank?"
-
-
- def organizers
- self.participants.includes(:person).where(is_organizer: true)
- end
-
- def is_participant?(person)
- Participant.exists?(
- activity_id: self.id,
- person_id: person.id
- )
- end
-
- def is_organizer?(person)
- Participant.exists?(
- person_id: person.id,
- activity_id: self.id,
- is_organizer: true
- )
- end
-
- def may_change?(person)
- person.is_admin ||
- self.is_organizer(person) ||
- self.group.is_leader(person)
- end
- private
-
-
- def deadline_before_start
- if self.deadline > self.start
- errors.add(:deadline, 'must be before start')
- end
- end
-
- def end_after_start
- if self.end < self.start
- errors.add(:end, 'must be after start')
- end
- end
- end
|