Проверка, которая исключает себя при обновлении, если поля не изменились - PullRequest
1 голос
/ 21 декабря 2010

У меня есть таблица с названием арендная плата, которая содержит даты начала и окончания. Затем я создал проверку, чтобы никакие новые арендные ставки не могли перекрывать существующие начальные и конечные даты арендной платы.

Дело в том, что когда я нажимаю на аренду, чтобы обновить ее, и если я не изменяю какие-либо поля и нажимаю кнопку обновить Он пытается проверить себя и сказать, что он перекрывает существующую запись. (Существующая запись, на которую она ссылается, это сама.)

То, что я пытаюсь сделать, это то, как я могу сделать так, чтобы моя проверка исключалась. Вот так выглядит моя проверка.

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

1 Ответ

1 голос
/ 21 декабря 2010

Вам необходимо проверить модуль грязной проверки ActiveModel. Вы можете проверить атрибуты, изменились ли они, и соответственно изменить свою логику.

http://railsapi.com/doc/rails-v3.0.1/classes/ActiveModel/Dirty.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...