Validar diás finales de mese en la entr ada de fechas

Genere todo un sistemas hasta que me di cuenta que tenia problemas en
las
entradas de fechas por ejemplo si digitan 31 de noviembre del 2008,
tenia
muchas entradas de fechas asá que decidí ir a la clase fecha y en mi
application.rb bajo el directorio controller agregue lo siguiente:

class Date
def self.new(y=-4712, m=1, d=1, sg=ITALY)
jd = nil
0.upto(3) {|nn|
unless ( jd = valid_civil?(y, m, d - nn, sg))
raise ArgumentError, ‘invalid date’ if nn == 3
end unless jd
}
new!(jd_to_ajd(jd, 0, 0), 0, sg)
end
end

la idea es que si no es correcto, antes de decidir que no esta bien le
quito
hasta tres dias y si aun asi no esta bien que de el error invalid date.

de modo que si ingresan 31 de noviembre del 2008 genera 30 de noviembre
del
2008.

supongo y tengo claro que esto se debe poder hacer de modo mucho más
elegante.

Solucione de una sola vez todos los ingresos de fechas del sistema.

Atte.