What would be the best approach to trying to "validate" uniqueness of dates for object.
--
So for example, I have a Room, that can only have 1 person in it at a time.
A User can book this Room in advance.
Currently the Room is booked from the 1st of March to the 5th of March.
I want to prevent anyone from booking again on those dates.
So if someone attempts to book a room from the 25th of Feb to the 2nd of March, I need to tell them they cannot, because the room is fully booked.
--
I am using Rails 3.0
I just wrote a simple app to test this out. Here's what I ended up using in the model validation.
The first custom validation checks to see if the current record's start_date falls between the start_date and end_date of any record, and second one does the same for end_date. You might want to show a better error message (like what is the start/end date of the record(s) that is/are clashing with the current one by doing a similar query (using .all instead of .count, and adding all the details of matching rooms).
Here's the db migration I used