I have a model that needs to check against some obvious common date ranges or a custom date range. Is there a built in way to do this in Ruby or Rails or is there at least a more elegant way to write this?
class Model < ApplicationRecord
attr_accessor :range
RANGES = ['Today','This Week','This Month','Yesterday','Last Week','Last Month','Custom']
private
def set_range
if range.present?
if range == 'Today'
self.start_date = Date.today.beginning_of_day
self.end_date = Date.today.end_of_day
elsif range == 'This Week'
self.start_date = Date.today.beginning_of_week
self.end_date = Date.today.end_of_week
elsif range == 'This Month'
self.start_date = Date.today.beginning_of_month
self.end_date = Date.today.end_of_month
elsif range == 'Yesterday'
self.start_date = 1.day.ago.beginning_of_day
self.end_date = 1.day.ago.end_of_day
elsif range == 'Last Week'
self.start_date = 1.week.ago.beginning_of_week
self.end_date = 1.week.ago.end_of_week
elsif range == 'Last Month'
self.start_date = 1.month.ago.beginning_of_month
self.end_date = 1.month.ago.end_of_month
elsif range == 'Custom'
self.start_date = start_date.beginning_of_day if start_date.present?
self.end_date = end_date.beginning_of_day if end_date.present?
end
end
end
end