Что делать с пустыми столбцами в моей базе данных? Выдает ошибку: ArgumentError: недопустимое значение для Float (): "" - PullRequest
0 голосов
/ 25 марта 2012

Я пытаюсь прочитать столбец значений String из моей БД. Я пытаюсь преобразовать их в поплавки. Я написал следующий метод, чтобы сделать это

def initialize (db_listings)
    db_listings.each do |listing| 
        name = listing.name 
        index = listing.id
        lat_string = listing.latitude
        long_string = listing.longitude
        puts "name = #{name}"
        puts "index = #{index}"
        puts "Converting #{lat_string} to float"
        puts "Converting #{long_string} to float"
        if(lat_string == nil || long_string == nil )
            lat_float = Float(9999)
            long_float = Float(9999)
        else
            lat_float = Float(lat_string)
            long_float = Float(long_string)
        end   

        puts "Now printing floats"

        puts lat_float
        puts long_float

    end



end

Но я получаю следующую ошибку:

Throwing an error:ArgumentError: invalid value for Float(): ""

Это потому, что он обнаружил пустую запись для этого столбца.

Мой вопрос: почему оператор if else в моем методе не уловил его?

Как настроить мой метод для пустых / недействительных значений в базе данных?

Спасибо

1 Ответ

1 голос
/ 25 марта 2012

Из сообщения об ошибке я полагаю lat_string и long_string - пустые строки, а не nil.Вы можете использовать blank?, чтобы перехватить как ноль, так и пустые строки:

    if(lat_string.blank? || long_string.blank?)
        lat_float = Float(9999)
        long_float = Float(9999)
    else
        lat_float = Float(lat_string)
        long_float = Float(long_string)
    end   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...