Rails应用程序 - 预订时间段架构设置

时间:2017-05-26 09:39:35

标签: ruby-on-rails ruby model schema

我目前正在构建一个Ruby on Rails应用程序,供学生使用教师预订研讨会课程。我正在寻求关于模型设置的一些建议。

我已经看过this& this堆栈溢出线程,但它们不回答我的问题。

所需功能:

  • 教师需要能够设置可供预订的每周重复时段
  • 除每周重复的插槽外,教练还需要能够打开额外的一次性时段
  • 教师需要能够一次性删除可用的时隙,例如:当导师去度假时
  • 课程不仅限于一名学生,课程可以拥有与教师一样多的学生
  • 所有课程都是一小时,因此只需要考虑开始时间

我目前的提议:

我正在考虑设置三个模型和三个表。这三个模型都连接到同一个workshop控制器。

示例数据使用以下场景:Tom每个星期一和星期一都有班级。星期二上午9点,但仅限于下周,他将把他的星期二班级改为星期三举行。

我的想法是,我有一个列出所有教师的模型。类。我为每个老师的班级提供了另一个反复出现时间段的模型。然后我有第三个例外模型,作为一个变化列表'到每周重复课程时间:

workshop模型链接到workshop表:

ID | Workshop Name | Price
1  | Tom's Class   | 100

workshop_times_recurring模型链接到workshop_times_recurring表:

ID | Workshop ID | Times
1  | 1           | {Monday 0900, Tuesday 0900}

workshop_times_other模型链接到workshop_times_other表:

ID | Workshop ID | Type    | Time
1  | 1           | Active  | {2017May31 09am}
2  | 1           | Inactive| {2017May30 09am}

我的问题是:

  1. 这是为我的应用设置模型的最优雅方式吗?我并非完全偏离轨道?如果没有,什么是更好的解决方案?
  2. 我希望我能够解析'Monday 0900, Tuesday 0900''2017May31 09am'等字符串,以便在javascript驱动的日期时间选择日历中正确显示信息。我目前的设置是否允许我在前端实现这一目标?

1 个答案:

答案 0 :(得分:1)

为了主要回答您的第二个问题,我建议使用既定格式重复日程安排,例如OpenStreetMap Opening Hours格式。它还有一个JavaScript library

但是既然它也可以处理常规时间表的异常,它也可能会简化你的模型。