Sha256: 84617195a379ef234080279d7c1a8555ca4ec06bdef2976217f22313329f4f56

Contents?: true

Size: 875 Bytes

Versions: 3

Compression:

Stored size: 875 Bytes

Contents

class Announcement < ActiveRecord::Base
  validate :posted_at_must_be_before_expired_at, :posted_at_must_exist_if_expired_at_exists

  def posted_at_must_be_before_expired_at
    if posted_at && expired_at && posted_at > expired_at
      errors.add :posted_at, "must be before expiration"
    end
  end

  def posted_at_must_exist_if_expired_at_exists
    if expired_at && !posted_at
      errors.add :posted_at, "must exist if expiration exists"
    end
  end

  class << self
    def disabled
      where :enabled => false
    end

    def enabled
      where :enabled => true
    end

    def active
      where "posted_at < ? AND (expired_at IS NULL OR expired_at > ?)", DateTime.now, DateTime.now
    end

    def expired
      where "expired_at < ?", DateTime.now
    end

    def future
      where "posted_at IS NULL OR posted_at > ?", DateTime.now
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cartoonist-announcements-0.0.5 app/models/announcement.rb
cartoonist-announcements-0.0.4 app/models/announcement.rb
cartoonist-announcements-0.0.3 app/models/announcement.rb