module Golden::DateTimeAccessor
Public Instance Methods
date_accessor(*attributes)
click to toggle source
rubocop:enable Metrics/CyclomaticComplexity
# File lib/golden/attribute_accessors/date_time_accessor.rb, line 41 def date_accessor(*attributes) datetime_accessor(*attributes, date_only: true) end
datetime_accessor(*attributes, date_only: false)
click to toggle source
rubocop:disable Metrics/CyclomaticComplexity
# File lib/golden/attribute_accessors/date_time_accessor.rb, line 11 def datetime_accessor(*attributes, date_only: false) [*attributes].uniq.each do |attribute_name| attr_accessor attribute_name class_eval do define_method("#{attribute_name}?") do instance_variable_get("@#{attribute_name}") end define_method("#{attribute_name}=") do |value| case value when ActiveSupport::TimeWithZone time = value when Date, Time, DateTime time = value when String time = parse_time(value) when NilClass time = nil else raise "#{value.class} is unsupported!" end time = time.to_date if time && date_only instance_variable_set("@#{attribute_name}", time) end end end end
parse_time(string, zone: Golden::AttributeAccessors.default_zone)
click to toggle source
# File lib/golden/attribute_accessors/date_time_accessor.rb, line 46 def parse_time(string, zone: Golden::AttributeAccessors.default_zone) ActiveSupport::TimeZone.new(zone)&.parse(string) rescue StandardError nil end