什么Rails Active Record Migration数据类型用于合同的持续时间?

时间:2012-05-17 18:50:08

标签: ruby-on-rails postgresql activerecord

我想在我的应用程序的数据库中捕获合同的条款。我使用带有轨道3的postgres。术语是合同的持续时间。输入的一些例子可以是5年,3年半,或2年3个月。我通常希望能够捕获数年和数月的持续时间。我应该使用什么数据类型来执行此操作?

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:2)

我认为您只需捕获月份(作为整数),或者有2个单独的字段。一年多一个月。您可以将月份实施为下拉菜单,以便只有0到11是可接受的值。

最后一个选项是使用日期时间,它比你想要的更精确,所以我不建议这样做。

答案 2 :(得分:2)

我会使用两个日期时间属性,start_date和end_date,这样你以后可以决定如何以任何你想要的方式表达合同条款,年/月,日,分,秒,无论你想要什么。

您可以定义一个名为term的伪属性,即

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年”或“3年”,“约1年”等。