2017-03-26 64 views
0

我有一個使用Postgresql的Rails應用程序。我希望用戶能夠選擇特定日期的時間範圍。例如,如果我是用戶,週一我想選擇(上午9:00 - 下午2:00)作爲我的時間範圍。如何格式化時間戳範圍postgresql rails

然後我會如何格式化以保存在Postgresql數據庫中?

遷移:

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

http://edgeguides.rubyonrails.org/active_record_postgresql.html – max

回答

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 

測試控制檯:

$ start = Time.zone.parse("2017-03-26 9:00am").to_i 
    $ stop = Time.zone.parse("2017-03-26 2:00pm").to_i 

    $ now = Time.zone.parse("2017-03-26 12:00pm").to_i 

    $ (start..stop).include?(now) 
    $ => true 
+0

不要添加一個答案,然後要求解決不同的問題。改爲提出一個單獨的問題。 –