class TimeParamsValidator
Attributes
Public Class Methods
Source
# File app/lib/time_params_validator.rb, line 6 def initialize(field_name:, object:, params:) @field_name = field_name @object = object @params = params end
Public Instance Methods
Source
# File app/lib/time_params_validator.rb, line 12 def time_params_as_struct time_params = [ params["#{field_name}(4i)"], params["#{field_name}(5i)"], params["#{field_name}(6i)"] ] Struct.new(:hour, :minute, :second).new(*time_params) end
Source
# File app/lib/time_params_validator.rb, line 21 def time_params_valid? time = time_params_as_struct return true if [time.hour, time.minute, time.second].all?(&:blank?) # If `omit_second` is set on the field, then the seconds field defaults to "0" return true if time.hour.blank? && time.minute.blank? && time.second == "0" if time.second.blank? object.errors.add(field_name, :missing_second) elsif time.minute.blank? object.errors.add(field_name, :missing_minute) elsif time.hour.blank? object.errors.add(field_name, :missing_hour) else begin Time.zone.local( 2000, 1, 1, time.hour.to_i, time.minute.to_i, time.second.to_i ) rescue ArgumentError object.errors.add(field_name, :blank) end end object.errors.none? end