I would use a Reservations table with three foreign keys: user_id, tour_id, and day_id.
Then that table could serve as a join table.
Then you could set up the following, depending on your needs:
# User
has_many :reservations
has_many :tours, through: :reservations
has_many :days, through: :reservations
# Tour
has_many :reservations
has_many :days, through: :reservations
has_many :users, through: :reservations
# Day
has_many :reservations
has_many :users, through: :reservations
has_many :tours, through: :reservations
Also, remember every has_many or has_one on one side needs a belongs_to on the other side.
# Reservation
belongs_to :user
belongs_to :tour
belongs_to :day
As for has_and_belongs_to_many -- it's often simpler to set up, but it's far less flexible than has_many :through, especially if you're joining more than two models.