Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 带验证的预订类型系统-Rails 3.0_Ruby On Rails_Date_Validates Uniqueness Of - Fatal编程技术网

Ruby on rails 带验证的预订类型系统-Rails 3.0

Ruby on rails 带验证的预订类型系统-Rails 3.0,ruby-on-rails,date,validates-uniqueness-of,Ruby On Rails,Date,Validates Uniqueness Of,尝试“验证”对象日期的唯一性的最佳方法是什么 -- 例如,我有一个房间,一次只能住一个人 用户可以提前预订这个房间 目前该房间的预订时间为3月1日至3月5日 我想阻止任何人在这些日期再次预订 因此,如果有人试图预订2月25日至3月2日的房间,我需要告诉他们他们不能预订,因为房间已经全部预订完毕 -- 我正在使用Rails 3.0,我刚刚编写了一个简单的应用程序来测试这一点。下面是我在模型验证中使用的内容 class Booking < ActiveRecord::Base valida

尝试“验证”对象日期的唯一性的最佳方法是什么

--

例如,我有一个房间,一次只能住一个人

用户可以提前预订这个房间

目前该房间的预订时间为3月1日至3月5日

我想阻止任何人在这些日期再次预订

因此,如果有人试图预订2月25日至3月2日的房间,我需要告诉他们他们不能预订,因为房间已经全部预订完毕

--


我正在使用Rails 3.0,我刚刚编写了一个简单的应用程序来测试这一点。下面是我在模型验证中使用的内容

class Booking < ActiveRecord::Base
  validate :uniqueness_of_date_range

  private
  def uniqueness_of_date_range
    errors.add(:start_date, "is not available") unless Room.where("? >= start_date AND ? <= end_date",
                                                            start_date, start_date).count == 0
    errors.add(:end_date, "is not available") unless Room.where("? >= start_date AND ? <= end_date",
                                                            end_date, end_date).count == 0
  end
end
班级预订错误。添加(:start_date,“不可用”),除非Room.where("?>=开始日期和?=开始日期和?非常感谢。我会尝试一下。如果预订的开始日期在现有预订的开始日期之前,而尝试的结束日期在该现有预订的结束日期之后,会怎么样?那么我也应该有冲突…因为他们基本上是在尝试预订o在整个事件中,不仅仅是在开始和结束日期内。。。
class CreateBookings < ActiveRecord::Migration
  def self.up
    create_table :bookings do |t|
      t.date :start_date
      t.date :end_date
      t.string :title

      t.timestamps
    end
  end

  def self.down
    drop_table :bookings
  end
end