分组验证

时间:2012-02-29 14:17:55

标签: ruby-on-rails ruby validation

嗨新的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    

2 个答案:

答案 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,我认为你做了它想做的事。