2010-12-20 1 views
1

Ich habe eine Tabelle namens Mieten, die ein Start- und Enddatum enthalten. Ich habe dann eine Validierung erstellt, damit keine neuen Mieten die Anfangs- und Enddaten der bestehenden Mieten überlappen können.Validierung, die sich selbst auf Update-Aktion ausschließt, wenn Felder nicht geändert wurden

Die Sache ist, wenn ich auf eine Miete klicke, um sie zu aktualisieren und wenn ich keine Felder ändere und auf Aktualisierung klicke. Es versucht, sich selbst zu validieren und zu sagen, dass es einen bestehenden Datensatz überlappt. (Der vorhandene Datensatz, auf den es sich bezieht, ist es selbst.)

Das was ich versuche zu tun ist, wie kann ich meine Validierung selbst ausschließen lassen. So sieht meine Validierung aus.

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

Ich habe Ihren Code neu formatiert, so dass es in einem Codeblock erscheint. Möglicherweise möchten Sie es neu formatieren, so dass der Inhalt der Methode nicht in einer einzigen Zeile zu weit zu sehen ist. – Phrogz

Antwort