ruby-on-rails - 如何检查预订日期是否与 Rails Hotel 应用程序重叠

标签 ruby-on-rails ruby

我正在使用 Ruby on Rails 为一家酒店制作一个 Web 应用程序。我看到一些问题可能与我的问题相同,但我找不到正确的解决方案。

用户可以创建预订并选择他们想要的房间以及到达和离开的日期。一切都按照我想要的方式进行,除了我的房间可以以重叠的日期预订之外。

架构:

create_table "bookings", force: :cascade do |t|
  t.integer  "user"
  t.integer  "course"
  t.date     "arriving_date"
  t.date     "leaving_date"
  t.boolean  "breakfast"
  t.text     "remarks"
  t.datetime "created_at",    null: false
  t.datetime "updated_at",    null: false
  t.integer  "room_id"
  t.integer  "user_id"
  t.index ["room_id"], name: "index_bookings_on_room_id", using: :btree
  t.index ["user_id"], name: "index_bookings_on_user_id", using: :btree
end

create_table "rooms", force: :cascade do |t|
  t.string   "room_number"
  t.integer  "room_type_id"
  t.datetime "created_at",   null: false
  t.datetime "updated_at",   null: false
  t.index ["room_type_id"], name: "index_rooms_on_room_type_id", using: :btree
end

Controller

  def new
    @booking = Booking.new
  end

  def create
    @booking = Booking.new(booking_params)
    if @booking.save
      redirect_to @booking
    else
      flash[:notice] = "Something went wrong"
      render 'index'
    end
  end

预订模式

class Booking < ApplicationRecord
  belongs_to :room
  belongs_to :user
end

我想要什么

当用户尝试创建预订时,他们不应该能够选择在他们想在酒店 sleep 的日子里已经预订的某个房间。

最佳答案

在最粗略的伪代码中,我将使用实例方法扩展 Room

# room.rb
def is_available? time_range
  bookings.present?(:arrival < time_range.end AND :depature > timerange.start)
end

在 Controller 的创建操作中调用它,就像您在自己的答案中所做的那样。

您肯定希望在不循环所有预订的情况下执行此操作!

关于ruby-on-rails - 如何检查预订日期是否与 Rails Hotel 应用程序重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41101130/

相关文章:

ruby-on-rails - AirBrake vs Exceptional vs errbit : which one is the best to track exceptions in your rails app?

ruby-on-rails - 使用 YAJL 在 Rails 中拉取流式 API

ruby-on-rails - Controller 类在什么时候实例化 Rails 网络应用程序中的 Controller 对象?

ruby - 如何在 Ruby 中为 String 类创建新函数?

javascript - Rails 关联表单与 Ajax 更新

ruby-on-rails - 在 Rails 中,在哪里放置对 Controller 和模型有用的函数

ruby-on-rails - 如何将 csv 文件上传到 rails 中的 ftp 服务器?

ruby-on-rails - 表单提交时未添加嵌套字段

ruby - 有没有办法访问 block 外 block 内定义的局部变量?

ruby-on-rails - Rails 3 - 使用 I18n 翻译路线