Ruby on rails 带验证的预订类型系统-Rails 3.0
尝试“验证”对象日期的唯一性的最佳方法是什么 -- 例如,我有一个房间,一次只能住一个人 用户可以提前预订这个房间 目前该房间的预订时间为3月1日至3月5日 我想阻止任何人在这些日期再次预订 因此,如果有人试图预订2月25日至3月2日的房间,我需要告诉他们他们不能预订,因为房间已经全部预订完毕 --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
我正在使用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