在我的Ruby on Rails应用程序中,自行车租赁公司可以管理其所有自行车(预订,付款等)。
上下文我想为自行车租赁公司(shops
)提供在其自己的网站上执行预订表格的选项,以便他们可以让客户预订bike
。
bike_categories
,其中bikes
在给定的arrival
和departure
日期可用。 问题在在线阅读了一些文档之后,我想我应该创建一个单独的表来处理每个bike_category
的可用性,然后该表将显示在所选count
和bikes
日期可用的arrival
的departure
。
=>示例:在1-1-2020
和1-2-2010
之间20
bikes
的“ C0”“山地自行车”可用
但是我不确定表的结构应该如何,因为bike_category
处于reservation
级别,因此属于bike
?
代码
模型
bike_category
我个人不会为此创建另一个表。我会向用户查询他们打算租用自行车的日期。确定开始日期和结束日期后,我会在预订表上查询,以查找这段时间内哪些自行车不可用。
例如
class Shop < ApplicationRecord
has_many :bike_categories, dependent: :destroy
has_many :bikes, through: :bike_categories
has_many :reservations, dependent: :destroy
end
class Reservation < ApplicationRecord
belongs_to :shop
belongs_to :bike
end
class Bike < ApplicationRecord
belongs_to :bike_category
has_many :reservations, dependent: :destroy
end
class BikeCategory < ApplicationRecord
belongs_to :shop
has_many :bikes, dependent: :destroy
end
然后,我将使用这些来找出每个类别中有多少]
reserved_bikes = Reservation.distinct.pluck(:bike_id).where(start_time: Time.now..user_end_time, end_time: Time.now..user_start_time)
如果您对它进行查询,也可能有一种对联接进行上述操作的方法。
通常,当已经可以推断数据时,我避免添加更多表。主要原因是,如果更新原始表(在这种情况下为保留),则必须将这些更新级联到“推断的数据”表,这很麻烦。