2013-04-28 43 views
0

我想這是關係到「普通老式Ruby對象」如何將模型中的邏輯提取爲更通用的Rails方法?

我建立了下面的方法爲「log_entry」模式:

def parse_time(string) 
    parts = string.split(":").map(&:to_f) 
    parts = [0] + parts if parts.length == 2 
    hours, minutes, seconds = parts 
    seconds = hours * 3600 + minutes * 60 + seconds 
    seconds.to_i 
    end 

我想提取到一個普通的老式Ruby類此然後在rails log_entry模型類中使用此方法作爲neccesscary。

我會在哪裏放這個類,以及如何在rspec中測試它呢?

回答

1

您不需要在Ruby on Rails中製作這樣的方法。它只是以秒爲單位轉換時間(字符串)。

您可以使用Time.parse("23:01").seconds_since_midnight

如果你需要用它來快速在視圖/控制器,例如converion,你可以添加輔助方法爲如下:

app/controllers/application_controller.rb

def parse_time(string) 
    Time.parse(string).seconds_since_midnight 
end 
helper_method :parse_time 
+0

我「越來越」3600.0「我該如何擺脫領先的.0? – 2013-04-29 02:47:13

+0

我確實返回了「%0.f」%字符串,但不確定它有多漂亮。 – 2013-04-29 02:51:26

+1

'Time.parse(string).seconds_since_midnight.to_i'? – kiddorails 2013-04-29 11:33:32

相關問題