如何格式化postgresql rails的时间戳范围

时间:2017-03-26 20:30:51

标签: ruby-on-rails ruby postgresql

我有一个使用Postgresql的Rails应用程序。我希望用户能够选择特定日期的时间范围。例如,如果我是用户,星期一我想选择(上午9:00 - 下午2:00)作为我的时间范围。

我如何格式化以保存在Postgresql DB中?

迁移:

class CreateMondayTimeFrames < ActiveRecord::Migration
  def change
    create_table :monday_time_frames do |t|
      t.belongs_to :user, index: true
      t.tstzrange :time_range
      t.timestamps null: false
    end
  end
end

控制器:

def create
  # The params I am passing in:
  # params[:time_start] => "9:00am", params[:time_stop] => "2:00pm"
  # Sudo: formatted_timestamp_range = (params[:time_start]..params[:time_stop]).convert_to_range
end

1 个答案:

答案 0 :(得分:0)

通过将数据类型更改为/来解决此问题。如果有人能给出int8range的答案,我会将你的答案标记为正确的答案。

tstzrange

<强>控制器

class CreateMondayTimeFrames < ActiveRecord::Migration
  def change
    create_table :monday_time_frames do |t|
      t.belongs_to :user, index: true
      t.int8range :time_range
      t.timestamps null: false
    end
  end
end

在控制台中测试:

def create
  start = Time.zone.parse("2017-03-26 9:00am").to_i
  stop = Time.zone.parse("2017-03-26 2:00pm").to_i
  formatted_time = (start..stop)
  MondayTimeFrame.create!(user_id: 1, time_range: formatted_time)
end