module ActsAsSpan::SpanKlass::Status

Public Instance Methods

current(query_date = Date.current) click to toggle source
# File lib/acts_as_span/span_klass/status.rb, line 9
def current(query_date = Date.current)
  klass.where(
    current_condition(query_date: query_date, table: arel_table)
  )
end
current_condition(query_date:, table:) click to toggle source

returns an Arel node usable within an ActiveRecord `where` clause

# File lib/acts_as_span/span_klass/status.rb, line 48
def current_condition(query_date:, table:)
  start_col = arel_table[start_field]
  end_col = arel_table[end_field]

  start_condition = start_col.lteq(query_date).or(start_col.eq(nil))
  end_condition = end_col.eq(nil).or(end_col.gteq(query_date))

  start_condition.and(end_condition)
end
current_or_future_on(query_date = Date.current) click to toggle source
# File lib/acts_as_span/span_klass/status.rb, line 32
def current_or_future_on(query_date = Date.current)
  klass.where(
    arel_table[start_field].lteq(query_date).
    and(
      arel_table[end_field].eq(nil).
      or(arel_table[end_field].gteq(query_date))
    ).
    or(arel_table[start_field].gt(query_date))
  )
end
expired(query_date = Date.current) click to toggle source
# File lib/acts_as_span/span_klass/status.rb, line 23
def expired(query_date = Date.current)
  klass.where(arel_table[end_field].lt(query_date))
end
future(query_date = Date.current) click to toggle source
# File lib/acts_as_span/span_klass/status.rb, line 17
def future(query_date = Date.current)
  klass.where(arel_table[start_field].gt(query_date))
end