나는 호텔 예약 시스템을 만들고있다. 나는 사용자, 방 및 예약을위한 모형이있다. 나는 사용자의 예약 객실을 나열 할 수 있습니다 (예를 들어, 노트, 의사 코드) 모두 잘 작동루비 온 레일즈 예약없이 기록을 찾는다
User has_many Reservations
User has_many Rooms, through Reservations
Room has_many Reservations
Room has_many Users, through Reservations
Reservation belongs_to Users
Reservation belongs_to Reservations
, 다음과 같이 내가 링크 연결을 사용했다. 이제는 현재 예약되지 않은 모든 객실을 나열해야합니다. 나를 위해이 작업을 수행 할 것 인 액티브 방법이있는 경우
reservations = Reservation.where('start > ? AND end < ?', Time.now, Time.now).select('room_id')
if reservations.empty?
@rooms = Room.all
else
@rooms = Room.where('id not in (?)',
reservations)
end
내가 궁금 : 나는 작동하지 않는 것 다음을 시도? 나는 마지막 방이 < 인 모든 방을 얻기 위해 객실에 LEFT JOIN을 강요했지만 그 중 하나도 작동하지 않았습니다.
많은 도움을 주셔서 감사합니다.
나는 지저분한 해결 방법을 가지고있다 : 방이 예약되어 있다면 모든 방의 루프를 돌리고 각 방을 반복하고 종료일을 확인한다. 그것은 작동하지만 예쁜 것은 아닙니다. 물론 이것은 간단한 왼쪽 조인 SQL 쿼리입니다! – wkdshot