2010-10-17 12 views
5

tengo el siguiente programa de Ruby:fecha de Rubí aritmética de error - "no se puede convertir en una fecha número exacto (TypeError)"

require 'date' 

class Person 

def initialize(name, dob) 
    @name = name 
    @dob = dob 
end 

def age 
    Time.now - @dob 
end 

def marry(someone) 
    "Life: " + age.to_s 
end 

end 

fred = Person.new('Fred', Date.new(1934, 4, 16)) 
p fred 
p fred.age.to_s 
p fred.marry(1) 

Pero rubí 1.9.2 da el error:

#<Person:0x2afab78 @name="Fred", @dob=#<Date: 1934-04-16 (4855087/2,0,2299161)>> 
test1.rb:11:in `-': can't convert Date into an exact number (TypeError) 
     from test1.rb:11:in `age' 
     from test1.rb:22:in `<main>' 

¿Qué estoy haciendo mal? TIA

Respuesta

7

Usted está tratando de restar un Date de un Time:

ruby-1.9.1-p378 > Time.now - Date.today 
TypeError: can't convert Date into Float 

Pero puede restar de forma segura una fecha de una cita:

ruby-1.9.1-p378 > Date.today - Date.new(1900,1,1) 
=> (40466/1) 

ruby-1.9.1-p378 > (Date.today - Date.new(1900,1,1)).to_f/365 # years 
=> 110.865753424658 
Cuestiones relacionadas