我有一个使用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
答案 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