嗨新的rails并开始开发我的应用程序,这是一个在线预订 我只是想知道Ruby在轨道上是否有办法对验证进行分组
EI。 我想首先在数据库中验证日期并检查它的存在以及该特定日期的timeStart和endTime条目,并根据日期验证其唯一性(timeStart和endTime)?是否有可能在验证或我必须为它制作一个控制器或方法?
抱歉我的英语不好 我的预订数据库是:0 id INTEGER 1 1
1 lname varchar(25 1 0
2 fname varchar(25 1 0
3 contactnum integer 1 0
4 email varchar(10 1 0
5 date date 1 '2012-03-0 0
6 timeStart time 1 '---
:hour 0
7 timeEnd time 1 '---
:hour 0
8 numGuest integer 0 5 0
9 totalCost decimal(2) 0 0
10 confirm boolean 0 'f' 0
11 created_at datetime 0 0
12 updated_at datetime 0 0
答案 0 :(得分:0)
您是否尝试过查找Rails验证?你想要的是唯一性验证。但是,有时您必须编写自己的验证,具体取决于是否没有内置验证方法。
Rails Guides会帮助你。我已经链接到关于唯一性方法的部分。
答案 1 :(得分:0)
这是一件非常简单的事情,我假设你的模型叫做预订:
class Reservation < ActiveRecord::Base
validates :date_and_times_are_unique
def date_and_times_are_unique
if Reservation.where(date: date, timeStart: timeStart, timeEnd: timeEnd).any?
errors.add(:base, "The reservation date and time combination must be unique")
end
end
end
这是一个自定义验证器,只是确保没有其他记录具有相同的日期,timeStart和timeEnd,我认为你做了它想做的事。