我正在使用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"自动?
答案 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]