def date_params_valid?
date = date_params_as_struct
return true if [date.year, date.month, date.day].all?(&:blank?)
if date.day.blank?
object.errors.add(field_name, :missing_day)
elsif date.month.blank?
object.errors.add(field_name, :missing_month)
elsif date.year.blank?
object.errors.add(field_name, :missing_year)
elsif date.year.to_i < 1000
object.errors.add(field_name, :missing_year)
else
begin
Date.new(date.year.to_i, date.month.to_i, date.day.to_i)
rescue Date::Error
object.errors.add(field_name, :blank)
end
end
object.errors.none?
end