Ruby - 显示与日期

时间:2017-03-08 13:11:51

标签: ruby-on-rails ruby date

我正在使用ruby on rails开发一个名册规划系统。

鉴于公司有三个团队。每个团队都需要轮班工作。

例如,

&#34 l /2017分之3"是A队值班 " 2/3/2017年"是B队值班 &#34 3/3/2017年"是C队值班 &#34 4/3/2017年"是A队值班 等,

这是我的ruby代码的一部分。

seed.rb

roster = Roster.create!(date: "1/03/2017", team: "A")
roster = Roster.create!(date: "2/03/2017", team: "B")
roster = Roster.create!(date: "3/03/2017", team: "C")
roster = Roster.create!(date: "4/03/2017", team: "A")

但是,我想知道如何通过计算显示哪个团队在特定日期值班,而不是存储在seed.rb中。

例如,

如何让系统显示哪个团队值班?" 11/3/2017"和" 15/3/2017"自动?

1 个答案:

答案 0 :(得分:1)

使用像ice_cube(https://github.com/seejohnrun/ice_cube)这样的宝石可能会有所帮助。然后,您可以轻松设置重复规则和查询事件。

例如,对于三个团队a, b, c

schedules = {}
start_date = Date.parse('1/3/2017')

%w[ a b c ].each_with_index do |team, index|
  schedules[team] = IceCube::Schedule.new(now = start_date + index) do |s|
    s.add_recurrence_rule(IceCube::Rule.daily(3))  # every 3 days
  end
end

然后您可以这样查询:

schedules['a'].first(3)
# => [2017-03-01 00:00:00 +0000, 2017-03-04 00:00:00 +0000, 2017-03-07 00:00:00 +0000]
schedules['b'].first(3)
# => [2017-03-02 00:00:00 +0000, 2017-03-05 00:00:00 +0000, 2017-03-08 00:00:00 +0000]