【发布时间】:2010-12-20 23:14:43
【问题描述】:
我有一个名为rents 的表,其中包含开始日期和结束日期。然后我创建了一个验证,这样新租金就不能与现有租金的开始和结束日期重叠。
问题是,当我单击租金进行更新时,如果我不更改任何字段并单击更新。它试图验证自己并说它与现有记录重叠。 (它所指的现有记录就是它本身。)
我想做的是,我怎样才能让我的验证排除自己。这就是我的验证的样子。
def should_not_overlap_rental_periods
errors.add(:start_date, "can't overlap other rental periods") if self.rents.where("end_date <= ? and start_date >= ?", self.end_date.strftime("%Y-%m-%d"), self.start_date.strftime("%Y-%m-%d")).count > 0 unless self.rents.blank?
end
【问题讨论】:
-
我已重新格式化您的代码,使其出现在代码块中。您可能需要重新格式化它,以便方法的内容不会在一行太宽而无法看到。
标签: validation activerecord model ruby-on-rails-3