In my Ruby on Rails app, bike rental companies can manage all their bikes (reservations, payments etc.).
Context
I would like to offer a bike rental companies (shops
) the option to implement a booking form on their own website, so they can let customers make a reservation for a bike
.
- This booking form would then show
bike_categories
of whichbikes
are available for a givenarrival
anddeparture
date.
Question
After reading some documentation online, I think I should create a separate table to deal with the availability per bike_category
, which would then show the the count
of bikes
available for the selected arrival
and departure
date.
=> example: between 1-1-2020
and 1-2-2010
20
bikes
of bike_category
"mountainbike" are available
But I'm unsure how the structure of the table should be, as a reservation
is on a bike
-level, which consequently belongs to a bike_category
?
Code
models
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