使用Ruby on Rails在PostgreSQL中使用interval

我希望从我的Rails应用程序中将持续时间(2天,5年……)作为PostgreSQL中的间隔保存。

duration_min和duration_max都是“2天”或“5年”之类的值,因此它们每个都是一个间隔:

def change create_table :times do |t| t.interval :duration_min t.interval :duration_max t.timestamps end end 

但是在将数据类型设置为“interval”并且rake返回时,数据库迁移失败:

 undefined method 'interval' for # 

如何定义表以接受(并理解)像“2天”这样的输入?

你很亲密:

 class CreateExamples < ActiveRecord::Migration def change create_table :examples do |t| t.column :duration_min, :interval t.column :duration_max, :interval t.timestamps end end end 

用法示例:

 Example.create duration_min: '2 hours', duration_max: '2 days' #=> # Example.where(%[TIMESTAMP ? - TIMESTAMP ? BETWEEN "duration_min" AND "duration_max"], DateTime.now, 10.hours.ago) #=> #]> 

我们可以尝试使用Rails 5.1的interval实现。

https://gist.github.com/vollnhals/a7d2ce1c077ae2289056afdf7bba094a