Module: Attio::Concerns::TimeFilterable

Defined in:
lib/attio/concerns/time_filterable.rb

Overview

Provides time-based filtering methods for any model Include this module to add time filtering capabilities

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#age_in_daysInteger

Get the age of the record in days

Returns:

  • (Integer)

    Days since creation



130
131
132
133
134
# File 'lib/attio/concerns/time_filterable.rb', line 130

def age_in_days
  return nil unless respond_to?(:created_at) && created_at
  created = created_at.is_a?(String) ? Time.parse(created_at) : created_at
  ((Time.now - created) / (24 * 60 * 60)).round
end

#created_in?(period) ⇒ Boolean

Check if this record was created in a specific period

Parameters:

Returns:

  • (Boolean)

    True if created in the period



113
114
115
116
117
# File 'lib/attio/concerns/time_filterable.rb', line 113

def created_in?(period)
  return false unless respond_to?(:created_at) && created_at
  date = created_at.is_a?(String) ? Time.parse(created_at) : created_at
  period.includes?(date)
end

#new?(days = 7) ⇒ Boolean

Check if record is new (created recently)

Parameters:

  • days (Integer) (defaults to: 7)

    Number of days to consider "new"

Returns:

  • (Boolean)

    True if created within specified days



139
140
141
142
# File 'lib/attio/concerns/time_filterable.rb', line 139

def new?(days = 7)
  age = age_in_days
  age && age <= days
end

#old?(days = 365) ⇒ Boolean

Check if record is old

Parameters:

  • days (Integer) (defaults to: 365)

    Number of days to consider "old"

Returns:

  • (Boolean)

    True if created more than specified days ago



147
148
149
150
# File 'lib/attio/concerns/time_filterable.rb', line 147

def old?(days = 365)
  age = age_in_days
  age && age > days
end

#updated_in?(period) ⇒ Boolean

Check if this record was updated in a specific period

Parameters:

Returns:

  • (Boolean)

    True if updated in the period



122
123
124
125
126
# File 'lib/attio/concerns/time_filterable.rb', line 122

def updated_in?(period)
  return false unless respond_to?(:updated_at) && updated_at
  date = updated_at.is_a?(String) ? Time.parse(updated_at) : updated_at
  period.includes?(date)
end