2011-04-03 77 views
2

我能想到的兩種解決方案:如何使用Rails在模型中存儲時間長度?

1)店鋪時,分,秒等在單獨的列在數據庫

  • 缺點:很多列

2)轉換和存儲的秒數

  • 我們仍然希望能夠在窗體中顯示小時,分鐘,秒等單獨的字段。我們可以爲其中的每一個寫入虛擬屬性,然後編寫一個before_save回調函數,將時間範圍轉換爲秒(仍然很麻煩)。

我失去了一些其他的顯而易見的解決方案?你如何做到這一點?

回答

1

我更喜歡在數據庫中單獨的列,如果我通過表單上3場接收輸入 - 它讓事情變得更清晰,更簡單(畢竟,在一個表時下一些額外的列不很擔心)。然後,你需要的是一個很好的方法來輸出這些東西。

+0

我在想,會順序和持續時間的兩行之間比較有問題? – randomguy 2011-04-03 22:16:50

+0

比如...... 1H0米VS 0H90米 – randomguy 2011-04-03 22:17:38

+0

排序不應該是一個問題 - 爲了幾個小時的第一,然後分鐘,然後秒。然而,比較是另一回事,如果你要在數據庫級別做很多這樣的事情,那麼按照你的建議在幾秒鐘內存儲這些東西將是有益的。 – Ant 2011-04-03 22:44:09

3

我投一列跟蹤持續時間。這樣可以使持續時間標準化,而您需要做幾乎同樣多的工作或更多來標準化多列持續時間。

鐵軌(的ActiveSupport)也給你美妙的方式與時間來工作。例如,如果你的時間是在幾秒鐘內,你可以很容易地在幾秒鐘內添加的持續時間爲時間點,並得到一個結束時間:

end_time = Time.now + duration_in_secs

這是使用虛擬屬性分開呢多做一些工作但根據我的經驗,這不是更多的工作。也許有一個簡化它的插件或寶石。

+0

如果沒有,那肯定應該存在一個寶石。 – randomguy 2011-04-04 11:52:46

相關問題