Sha256: adbc256e8295415e075f3756c9aed2bf062a94aa17993e4c050828855515e191

Contents?: true

Size: 1.24 KB

Versions: 54

Compression:

Stored size: 1.24 KB

Contents

module Tenon
  class Event < ActiveRecord::Base
    # Scopes, attachments, etc.
    scope :published, -> { where('publish_at <= ?', Time.now) }
    scope :upcoming, -> { where(['ends_at > ?', Time.now]).order(:starts_at) }
    scope :past, -> { where(['ends_at < ?', Time.now]).order(:starts_at) }
    default_scope -> { order 'starts_at DESC' }
    tenon_content :description, i18n: true
    has_history includes: [:description_tenon_content_rows]

    # Validations
    validates_presence_of :title, :starts_at, :ends_at

    def self.on(year, month = nil, day = nil)
      fail ArgumentError, 'must pass a month to pass a day' if day && !month
      time = Time.mktime(year, month, day)
      # delta = day ? 1.day : month ? 1.month : year ? 1.year : fail
      if day
        delta = 1.day
      elsif month
        delta = 1.month
      elsif year
        delta = 1.year
      else
        fail
      end

      limit = time + delta

      where('starts_at > ? AND starts_at < ?', time, limit).order('starts_at')
    end

    def to_param
      "#{id}-#{title.parameterize}"
    end

    def next
      Event.published.where('starts_at > ?', starts_at).first
    end

    def previous
      Event.published.where('starts_at < ?', starts_at).last
    end
  end
end

Version data entries

54 entries across 54 versions & 1 rubygems

Version Path
tenon-1.1.8 app/models/tenon/event.rb
tenon-1.1.7 app/models/tenon/event.rb
tenon-1.1.6 app/models/tenon/event.rb
tenon-1.1.5 app/models/tenon/event.rb
tenon-1.1.4 app/models/tenon/event.rb
tenon-1.1.3 app/models/tenon/event.rb
tenon-1.1.2 app/models/tenon/event.rb
tenon-1.1.1 app/models/tenon/event.rb
tenon-1.0.76 app/models/tenon/event.rb
tenon-1.0.75 app/models/tenon/event.rb
tenon-1.0.74 app/models/tenon/event.rb
tenon-1.0.73 app/models/tenon/event.rb
tenon-1.0.72 app/models/tenon/event.rb
tenon-1.0.71 app/models/tenon/event.rb
tenon-1.0.70 app/models/tenon/event.rb
tenon-1.0.69 app/models/tenon/event.rb
tenon-1.0.68 app/models/tenon/event.rb
tenon-1.0.67 app/models/tenon/event.rb
tenon-1.0.66 app/models/tenon/event.rb
tenon-1.0.65 app/models/tenon/event.rb