使用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