Sha256: efe12fc83ca2726592f9f75a8a5926ffa18e187d586016868528ffc3849eca01

Contents?: true

Size: 776 Bytes

Versions: 1

Compression:

Stored size: 776 Bytes

Contents

module Appt
  class CalendarEvent < ActiveRecord::Base
    extend SimpleCalendar

    self.abstract_class = true

    has_calendar attribute: :day

    serialize :start, Tod::TimeOfDay
    serialize :end, Tod::TimeOfDay

    belongs_to :calendar
    validates :calendar, :day, :start, :end, presence: true

    def start_local
      calendar.local_time_of_day(day, start)
    end

    def end_local
      calendar.local_time_of_day(day, self.end)
    end

    def duration
      shift.duration / 60
    end

    def duration=(value)
      fail 'Cannot assign duration if start is nil' if start.nil?

      self.end = start + value.minutes
    end

  private

    def shift
      Tod::Shift.new(start, self.end, true)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
appt-0.0.1.beta.3 app/models/appt/calendar_event.rb