这种情况的最佳做法是什么?
我正在建立一个预订系统,我正在寻找捕获和存储用户信息的最佳方式。每个资源都可以使用一天,最多可以占用任意数量的用户。例如,假设这是一个最多可容纳5人的热气球。我希望我的表单看起来像这样:
[Buttons to select # of guests] // So if a user wants the same price for 1-3 people he only has to enter it once.
From [START DATE] to [END DATE]: [RATE] // Where the []'s are input fields for the user
我计划将每个价格存储在数据库中:
Date, # of guests, rate
每个日期都有一行。
所以我需要将“[START DATE]
转换为[END DATE]
”以存储每个日期的值。我应该在Javascript中使用客户端,还是在rails中使用我的控制器?如果一组客人的费率相同,即1-3位客人,有没有办法将其存储在数据库中以便更好地查询?或者我不应该打扰,因为如果明天用户想要更改2位客人的价格,可能会搞砸我的数据库。
答案 0 :(得分:0)
Start date
和End date
与Each date
- 几个条件:
如果用户想要预订3天的热气球,那么它每天都是相同的热气球还是可以改变?如果它可能不同,请将resources.type
字段映射到多个booked_resources.id
。
如果您使用单独的start
和end
日期,则需要检查资源使用情况的重叠。使用booked_resource.id
存储每日一次的重复记录将消除重叠检查的需要。请参阅此主题以获取相关问题:Storing Calendar Data in MySQL
发送客户端JS每天的日期数组可能比提取for each day between start date and end date
更容易。选择最适合您当前代码的那个。请记住,无论哪种方式,都必须修改SQL /日期检查以发现不可用。
如果用户可以更改访客数量并影响费用,那么存储每个日期对于此类数据库更新会更方便(如酒店的逐项列出的条款)。否则,您需要为具有不同客人数的日期“拆分”记录。