【发布时间】:2022-01-19 23:20:21
【问题描述】:
我想做一个预约系统,用户只有在有空时才能预约。我有 4 个不同的表:
- 医生表,
- docdays 表,其中包含对医生的引用,
- 包含对 docdays 的引用的 doctimes 表。
- 预订表
doctimes 表:医生存储日程的地方
| start_time | end_time | docday_id |
|---|---|---|
| 08:00:00 | 12:00:00 | 1 |
| 13:00:00 | 15:00:00 | 1 |
预约表:当医生按时,患者可以预约的地方
| start_time | end_time | doctor_id |
|---|---|---|
患者将输入他们的预约数据,如start_time和end_time,并将其存储到预约表中。
问题是,如何仅在 doctimes 表上显示 start_time 和 end_time 之间的数据,以便我进行验证?
我试过这样:
time_check = Doctor.select('doctors.id,doctimes.start_time,doctimes.end_time').
joins(:docday =>[:doctime]).where('doctimes.start_time BETWEEN ? AND ?', params[:start_time],params[:end_time]).where(id: params[:doctor_id])
但以当前数据为例,当患者尝试:输入09:00:00 - 11:00:00 时,它不会显示任何内容。因为08:00:00 不在09:00:00 - 11:00:00 之间
我做错了什么,它应该显示数据,因为09:00:00 - 11:00:00 仍在08:00:00 - 12:00:00 之间
有没有办法做到这一点?
【问题讨论】:
标签: ruby-on-rails