【问题标题】:How to properly model a booking system in Rails如何在 Rails 中正确建模预订系统
【发布时间】:2019-10-18 04:14:13
【问题描述】:

我正在构建一个预订系统,学生可以在其中预订老师的课程。

特点:

  • 教师根据 30 分钟的时间段提供他们的可用性。
  • 教师在课程期间提供选项。
    • 一节课的时长可以是 45 分钟、90 分钟等。
  • 学生根据老师的空闲时间和他们选择的时长来预订课程。

在给定的预定时长下,我如何模拟教师的可用性?

例如,如果老师在 1:00-2:00 有空,而学生预订了 45 分钟的课程,则预订时间为 1:00-1:45,而老师现在在 1:00 有空:45-2:00。

到目前为止我的模型: Booking models

【问题讨论】:

  • 你需要一个teacher_id 属性在LessonItemmax_bookingtotal_bookingtime_slot 你可以跟踪学生的插槽可用性。
  • 时间段也应该属于课程项目而不是预订
  • 你能谈谈在time_slot中添加max_bookingtotal_booking吗?
  • 忘了添加,但我在 TimeSlot 中有一个 available 布尔值来显示 time_slot 是否已被预订
  • 一个LessonItem属于一个Lesson,它属于一个Teacher所以我只是建立一个has_many_through

标签: ruby-on-rails postgresql activerecord model


【解决方案1】:

我们可以像下面这样建模,以便能够将一个与另一个相关联

Teachers_Availability_Information 老师_ID 教师姓名

Slot_Information 老师_ID 开始时间(日期时间) 结束时间(日期时间)

  • 这样我们就可以为同一个人映射不同的时段

学生信息 学生卡 学生姓名

Lesson_Details 章节 章节名称 持续时间

预订 老师_ID 学生卡 章节 开始时间(日期时间) 结束时间(日期时间)

  • 保存学生输入的信息

【讨论】:

    【解决方案2】:

    不要使用一个巨大的时间段(从 1:00 到 2:00),而是将其拆分为 15 分钟的时间段(或任何最小的可分配部分,10 分钟?)。

    所以现在我们的老师有 4 个 15 分钟的未分配(又名免费)时间段。然后,第一个学生可以查看哪些时间段是免费的并预订它们。预订他们然后意味着:将插槽分配给她自己。

    在这种情况下,我什至不确定是否需要 BookingLessonItem。或者你仍然可以选择某种Booking/Lesson 对象has_many(连续?)TimeSlot-s,然后打开其他可能性:

    • 几个学生可以一起预定一堂课吗?
    • 他们可以添加更多信息:主题、cmets、评级(之后)?

    【讨论】:

      猜你喜欢
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 2019-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多