Ruby on rails 在合同期限内使用哪种Rails活动记录迁移数据类型?

Ruby on rails 在合同期限内使用哪种Rails活动记录迁移数据类型?,ruby-on-rails,postgresql,activerecord,Ruby On Rails,Postgresql,Activerecord,我想在应用程序的数据库中捕获合同条款。我正在使用带有rails 3的postgres。期限是指合同的期限。一些输入示例可能是5年、3年半或2年3个月。我通常希望能够以年和月为单位记录持续时间。我应该使用什么数据类型来执行此操作?我认为您只需要捕获月份(作为整数),或者有两个单独的字段。一年一个月。您可以将月份实现为下拉菜单,以便只有0到11是可接受的值 最后一个选项是使用datetime,它比您想要的要精确得多,因此我不推荐使用它。我认为您只需要捕获月份(作为整数),或者有两个单独的字段。一年一

我想在应用程序的数据库中捕获合同条款。我正在使用带有rails 3的postgres。期限是指合同的期限。一些输入示例可能是5年、3年半或2年3个月。我通常希望能够以年和月为单位记录持续时间。我应该使用什么数据类型来执行此操作?

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


最后一个选项是使用datetime,它比您想要的要精确得多,因此我不推荐使用它。

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


最后一个选项是使用datetime,它比您想要的要精确得多,因此我不推荐使用它。

我将使用两个datetime属性,开始日期和结束日期,这样您可以在以后决定如何以您想要的任何方式表示合同期限,年/月、天、分钟、秒,无论您想要什么

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

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

将打印一个近似字符串,如“1年”或“3年”、“大约1年”等。

我将使用两个日期时间属性,开始日期和结束日期,这样以后您可以决定如何以任何方式表示合同期限,年/月、日、分、秒,无论您想要什么

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

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

将打印近似字符串,如“1年”或“3年”、“大约1年”等。

Postgresql支持
间隔
数据类型


Postgresql支持
间隔
数据类型


日期时间不是间隔。如果使用datetime,则需要另一个字段来创建时间范围。datetime不是间隔。如果使用datetime,则需要另一个字段来创建时间范围。我在其中任何地方都看不到
间隔
。。。
间隔
是一个类似于
3天
的值,但似乎都是关于
范围
(类似于从2天前到明天的
)的值。我不确定ActiveRecord是如何工作的,但postgresql中就是这样处理的:是关于ActiveRecord中间隔支持的错误。。也许这意味着它将在版本4中得到支持。这个bug说间隔映射到rails中的字符串(对于rails 4来说不是新的)。我不认为这是适当的支持!就我个人而言,我会使用一个整数字段表示分钟/月数,然后从模型中的访问器返回一个时间长度。我在任何地方都看不到
间隔
。。。
间隔
是一个类似于
3天
的值,但似乎都是关于
范围
(类似于从2天前到明天的
)的值。我不确定ActiveRecord是如何工作的,但postgresql中就是这样处理的:是关于ActiveRecord中间隔支持的错误。。也许这意味着它将在版本4中得到支持。这个bug说间隔映射到rails中的字符串(对于rails 4来说不是新的)。我不认为这是适当的支持!就个人而言,我会使用整数字段表示分钟/月数,然后从模型中的访问器返回时间长度。