2012-05-17 18 views

回答

2

我認爲你只需要捕捉月份(作爲一個整數),或者有2個獨立的字段。每年一個月。您可以將幾個月實施爲下拉菜單,以便只有0到11是可接受的值。

最後一個選擇是使用datetime,它比你想要的要精確得多,所以我不會爲此推薦它。

+0

datetime不是時間間隔。如果您使用日期時間,則需要另一個字段來創建時間範圍。 –

2

我會使用兩種日期時間屬性start_date和end_date,這樣您可以稍後決定如何以任何想要的方式表示合同的期限,年/月,日,分,秒,無論您想要什麼。

您可以定義名詞叫做僞屬性,即

class Contract < ActiveRecord::Base 
    def term 
    return self.end_date - self.start_date 
    end 
end 

任期將在幾秒鐘內,你可以做一些簡單的數學和返回幾個月,幾年或幾個月,等你也可以使用DateHelper,即

distance_of_time_in_words(@contract.start_date,@contract.end_date) 

將打印的近似串像 '1 year' 或「3年, '約1年' 等

4

PostgreSQL支持一個interval數據類型。

http://www.postgresql.org/docs/9.1/static/datatype-datetime.html

+1

是的,但Rails沒有。 – Hbcdev

+0

Rails 4將! https://github.com/rails/rails/pull/7345 –

+0

我無法在任何地方看到「間隔」......「間隔」是一個像「3天」這樣的值,但似乎全是關於' (從2天前到明天的值)。 – Hbcdev

相關問題