Skip to content

Instantly share code, notes, and snippets.

@fny
Created June 16, 2015 17:29
Show Gist options
  • Save fny/faaf611822c915ffca6a to your computer and use it in GitHub Desktop.
Save fny/faaf611822c915ffca6a to your computer and use it in GitHub Desktop.
Date Range Params Concern WIP
module DateRangeParams
extend ActiveSupport::Concern
included do
helper_method :start_date
helper_method :end_date
helper_method :date_range
def self.set_default_end_date(&block)
@default_end_date = block
end
def self.set_default_start_date(&block)
@default_start_date = block
end
# Defaults to a week before the end date
def self.default_start_date
@default_start_date || Proc.new { end_date - 7 }
end
# Defaults to `today`
def self.default_end_date
@default_end_date || Proc.new { today }
end
end
def date_range
start_date..end_date
end
def start_date
@start_date ||= Date.parse(params[:from] || '')
rescue ArgumentError
@start_date ||= instance_eval(&self.class.default_start_date)
end
def end_date
@end_date ||= Date.parse(params[:to] || '')
rescue ArgumentError
@end_date ||= instance_eval(&self.class.default_end_date)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment