Ruby on Rails, return 0 instead of error -
i'm building ruby on rails application , i'm meet error:
typeerror: nil can't coerced float
or string or other variables type when calculation or queries such as:
upcoming = appointment.where(:hairdresser_id => hairdresser_id).where('status = ? or status = ?', 'accepted', 'personal').map{|app| app.price}.reduce(0, :+)
i think understand problem, know if there simple way can return 0 instead of errors that, because happens maybe hairdresser not have accepted appointments.
one solution check if exists before doing caluclation i'm sure won't best solution!
thanks help!
if appointment#price
db column can add additional check:
.where.not(price: nil)
if it's method or virtual attribute either convert value float or int, convert nil it's numeric representation of 0:
.map{ |app| app.price.to_f } # or `app.price.to_i`
or compact result of map
, removes entries result nil
.map{ |app| app.price }.compact
Comments
Post a Comment